2014-09-23 684 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;