我从多个表中获取数据,并希望对结果进行排序,以便没有两个值组合在一起。
例如查询返回以下数据。
23
25
26
26
22
22
19
我希望这个结果能够像这样排序,这样就不会有两个值来消费。
23
25
26
22
26
22
19
答案 0 :(得分:1)
实际上,您无法保证没有两个值组合在一起(例如,所有值可能都相同)。但你可以分发它们。这是一个使用子查询和变量的方法:
select t.*
from (select q.*,
(@rn := if(@v = col, @rn + 1,
if(@v := col, 1, 1)
)
) as rn
from (query) q cross join
(select @v := -1, @rn := 0) vars
order by col
) t
order by rn, col;