DB から何かを選択した後、2 行ごとにのみ表示しようとしています。
私の選択は次のようになります。
SELECT * FROM table where partnerID = '1'
その選択クエリの結果から、2 行ごとに取得したいと考えています。
それは可能ですか?
SELECT * FROM (
SELECT @n := @n + 1 AS position,
t.*
FROM (SELECT @n:=0) counter,
table t
WHERE partnerID = 1)
AS query
WHERE MOD(position,2) = 0
$count = 0;
while($row = mysql_fetch_array($results)) {
$count++;
if($count % 2 == 1) continue;
// What you want to do with the rows you don't want to skip here...
}
On a side note, you can use this same strategy to only show every 3rd row, or every 4th row, simply by changing what number you put next to the modulus operator
if($count % 3 != 0) continue; // Show only every third row
if($count % 4 != 0) continue; // Show only every fourth row
これは次の方法で行うことができます。
SELECT * FROM
(
SELECT
@I := @I + 1 AS rowNumber,
tablename.*
FROM
tablename,
(SELECT @I := 0) VT1
WHERE partnerID = 2
ORDER BY ID
) NumberedRows
WHERE MOD(rowNumber, 2)=0
;
これが正しい答えかどうかはわかりませんが、MOD関数( http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_mod)のようなものを使用する必要があるようです。
SELECT * FROM `table` WHERE id & 1;
奇数行を返します