在sql中查找每2个备用记录

时间:2014-06-21 17:45:26

标签: mysql

我遇到了SQl查询的问题。它如下所示。

在特定领域,记录包括" A"和" B"仅

现在,如果我想找到" A"接下来是" B"再次记录" A"和#34; 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
.........
.........

..............等等

请帮助我解决上述问题....因为我坚持这个问题。

谢谢!

2 个答案:

答案 0 :(得分:0)

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

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;

答案 1 :(得分:0)

或更慢但更冷......

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;