我遇到了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
.........
.........
..............等等
请帮助我解决上述问题....因为我坚持这个问题。
谢谢!
答案 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;