2014-09-23 685 views
2

我想從MySQL中的表中選擇所有偶數或奇數行而不使用ID字段。 我試過這個,但我認爲它不工作,因爲它基於SQL Server: how to show only even or odd rows in sql server 2008?在MySQL中只選擇偶數/奇數行

謝謝大家提前。

+1

有沒有這樣的事,作爲一個「偶」或「奇」在MySQL行。表格表示無序集合。您需要一個指定行的排序的列。 – 2014-09-23 11:30:36

+1

如果您有ID的順序,您可以檢索ID%2 == 0 – Tushar 2014-09-23 11:31:47

+0

[http://stackoverflow.com/questions/15578727/select-every-second-row-mysql-without-auto-increment-or-data表] – Anptk 2014-09-23 11:40:21

回答

5

假設你有一個指定表的排序列,那麼你可以使用變量做你想要什麼:

select t.* 
from (select t.*, (@rn := @rn + 1) as seqnum 
     from table t cross join 
      (select @rn := 0) vars 
     order by col 
    ) t 
where mod(seqnum, 2) = 0; 
+1

它的工作原理,謝謝!如果我要求你解釋它,我是否問得太多?我不明白「@rn」和「VARS」的含義。 – AleVale94 2014-09-23 11:44:31

+2

'vars'是一個表別名,'@ rn'是MySQL中的一個變量。你可以在這裏閱讀有關變量:http://dev.mysql.com/doc/refman/5.7/en/user-variables.html。 – 2014-09-23 13:39:00

1

嘗試使用此: -

SELECT cols 
FROM (
     SELECT cols, @rowNumber := @rowNumber+ 1 rn 
     FROM YourTable 
     JOIN (SELECT @rowNumber:= 0) r 
    ) t 
WHERE rn % 2 = 1;