mysql - 查找sql​​中每2个备用记录

标签 mysql

我在 SQl 查询方面遇到问题。如下。

在特定字段中,记录仅由“A”和“B”组成。

现在,如果我想查找 2 条“A”记录,然后查找 2 条“B”记录,然后再查找 2 条“A”记录和 2 条“B”记录,依此类推,直到记录结束。

example output should be something like below.
    ID        Field
---------     -----
    2           A
    3           A
    1           B
    5           B
    4           A
    7           A
    6           B
    8           B
.........
.........

…………等等

请帮助我解决上述问题......因为我被这个查询困住了。

谢谢!

最佳答案

您可以通过枚举每个值的行,然后巧妙地对结果进行排序来完成此操作:

select id, field
from (select t.*,
             if(field = 'A', @a_rn := @a_rn + 1, @b_rn := @b_rn + 1) as rn
      from table t
           (select @a_rn := 0, @b_rn := 0) vars
     ) t
order by (rn - 1) div 2, field;

关于mysql - 查找sql​​中每2个备用记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24344237/

相关文章:

mysql - MySQL 对 amazon rds 上的大表有任何潜在的查询性能吗?

javascript - this._callback.apply 不是函数! Node js Mysql错误

JavaScript 删除不起作用

php - MySQL检查表是否存在而不抛出异常

mysql - 使用 if 选择输出值的 SQL 字符串连接

mysql - 子查询获取最后一条记录

java - 发生异常时重新执行DB更新查询

MySQL 仅从 SELECT 创建具有自动增量的临时表

php - 如何更新包含两个不同表的id映射的mysql映射表

MySQL 通用查询日志录入顺序