主キーを持たない次のテーブルを考慮して、1行おきに選択できますか?
col1 col2
2 a
1 b
3 c
12 g
最初の選択は見つける必要があります:2、3
2番目の選択は見つける必要があります:1、12
それは可能ですか?
ユニークなMySQLのやり方で:
select *
from (
select *
, @rn := @rn + 1 as rn
from Table1
join (select @rn := 0) i
) s
where rn mod 2 = 0 -- Use = 1 for the other set
これを試して。以下にリンクされている回答からそれを適応させました。SQLFiddleでテストしたところ、機能しているようです。
http://sqlfiddle.com/#!2/0bccf/28
http://sqlfiddle.com/#!2/0bccf/29
奇数行:
SELECT x.*
FROM (
SELECT @rownum:=@rownum+1 rownum, t.*
FROM (SELECT @rownum:=0) r, table t
) x
WHERE MOD(x.rownum, 2) = 1
偶数行:
SELECT x.*
FROM (
SELECT @rownum:=@rownum+1 rownum, t.*
FROM (SELECT @rownum:=0) r, table t
) x
WHERE MOD(x.rownum, 2) = 0
適応元: MySQL行番号
はい、一時変数を使用して可能
例 :
set @a := 0;
select * from car_m_city WHERE mod((@a:=@a+1), 2) = 1
説明 :
set @a := 0;
ここでSQLで、@ a( )一時変数を宣言します。奇数または偶数をチェックする簡単な方法のように、1.jsutずつインクリメントするようになりまし(@a:=@a+1)
た@a
mod((@a:=@a+1), 2) = 1
奇数データの場合
mod((@a:=@a+1), 2) = 0
偶数データの場合
これは私のために働きます。
SET @row_number = 0;
select* from (
SELECT
(@row_number:=@row_number + 1) AS num, col1,col2
FROM
TABLE1
) as t WHERE num%2=0
奇数行にはmod1を使用し、偶数行にはmod0を使用できます
これはMySQLで機能するはずです:
SELECT col1, col2
FROM (
SELECT col1, col2, @rowNumber:=@rowNumber+ 1 rn
FROM YourTable
JOIN (SELECT @rowNumber:= 0) r
) t
WHERE rn % 2 = 1
これは、MOD演算子である%を使用します。
そしてここにサンプルフィドルがあります:http ://sqlfiddle.com/#!2/cd31b/2