我想从MySQL中的表中选择所有偶数或奇数行而不使用ID字段。 我试过这个,但我认为它不工作,因为它基于SQL Server: how to show only even or odd rows in sql server 2008?在MySQL中只选择偶数/奇数行
谢谢大家提前。
我想从MySQL中的表中选择所有偶数或奇数行而不使用ID字段。 我试过这个,但我认为它不工作,因为它基于SQL Server: how to show only even or odd rows in sql server 2008?在MySQL中只选择偶数/奇数行
谢谢大家提前。
假设你有一个指定表的排序列,那么你可以使用变量做你想要什么:
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;
它的工作原理,谢谢!如果我要求你解释它,我是否问得太多?我不明白“@rn”和“VARS”的含义。 – AleVale94 2014-09-23 11:44:31
'vars'是一个表别名,'@ rn'是MySQL中的一个变量。你可以在这里阅读有关变量:http://dev.mysql.com/doc/refman/5.7/en/user-variables.html。 – 2014-09-23 13:39:00
尝试使用此: -
SELECT cols
FROM (
SELECT cols, @rowNumber := @rowNumber+ 1 rn
FROM YourTable
JOIN (SELECT @rowNumber:= 0) r
) t
WHERE rn % 2 = 1;
我可以不要留下评论做我的声誉,所以我会发布代替:
同样的问题已经被问到这里和解决方案已经发布。
select every other row in MySQL without depending on any ID?
有没有这样的事,作为一个“偶”或“奇”在MySQL行。表格表示无序集合。您需要一个指定行的排序的列。 – 2014-09-23 11:30:36
如果您有ID的顺序,您可以检索ID%2 == 0 – Tushar 2014-09-23 11:31:47
[http://stackoverflow.com/questions/15578727/select-every-second-row-mysql-without-auto-increment-or-data表] – Anptk 2014-09-23 11:40:21