【问题标题】:Select only even/odd rows in MySQL [duplicate]在MySQL中仅选择偶数/奇数行[重复]
【发布时间】:2014-09-23 11:28:41
【问题描述】:

我试图在不使用 ID 字段的情况下从 MySQL 的表中选择所有偶数行或奇数行。 我试过这个,但我想它不起作用,因为它基于 SQL Server: how to show only even or odd rows in sql server 2008?

提前谢谢大家。

【问题讨论】:

  • MySQL 中不存在“偶数”或“奇数”行。表代表无序集。您需要一列来指定行的顺序。
  • 如果你有 id 的顺序,你可以检索 where id % 2==0

标签: mysql sql select


【解决方案1】:

假设你有一列指定表格的顺序,那么你可以使用变量来做你想做的事:

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”的含义。
  • vars 是表别名,@rn 是 MySQL 中的变量。您可以在此处阅读有关变量的信息:dev.mysql.com/doc/refman/5.7/en/user-variables.html
  • 我有一个问题:您使用的是PL/SQL?
【解决方案2】:

尝试使用这个:-

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

【讨论】:

    猜你喜欢
    • 2015-11-26
    • 2013-07-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多