Mysql 在sql中查找每2条备用记录

Mysql 在sql中查找每2条备用记录,mysql,Mysql,我对SQl查询有问题。如下所示 在特定字段中,记录仅由“a”和“B”组成 现在,如果我想找到两条记录“A”,然后是两条记录“B”,然后再找到两条记录“A”和两条记录“B”,依此类推,直到记录结束 example output should be something like below. ID Field --------- ----- 2 A 3 A 1 B 5

我对SQl查询有问题。如下所示

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

现在,如果我想找到两条记录“A”,然后是两条记录“B”,然后再找到两条记录“A”和两条记录“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;

或者更慢但更酷

SELECT x.* 
  FROM my_table x 
  JOIN my_table y 
    ON y.field = x.field 
   AND y.id <= x.id 
 GROUP 
    BY field
     , id 
 ORDER 
    BY CEILING(COUNT(*)/2)
     , field;
选择x.*
从我的表x
加入我的桌子
关于y.field=x.field

你的输入记录是什么样子的?