我的SQL查询顺序,以便列中没有相同的值

时间:2014-09-24 15:09:14

标签: mysql sql group-by sql-order-by

我从多个表中获取数据,并希望对结果进行排序,以便没有两个值组合在一起。

例如查询返回以下数据。

23

25

26

26

22

22

19

我希望这个结果能够像这样排序,这样就不会有两个值来消费。

23

25

26

22

26

22

19

1 个答案:

答案 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;