mysql多列排序顺序

时间:2013-09-24 17:24:37

标签: mysql

我有1个表,其中6列都是tinyint,有1位数。 我需要一个查询来返回每列中排序(有序)的数据。

示例:

col1    col2    col3
  1       2       5
  1       7       3
  2       3       7

预期结果:

  2      7        7
  1      3        5 
  1      2        3

我尝试按col1,col2 DESC排序,但它只影响第一列(也许是因为它来自同一个表?) 谢谢, 丹尼

3 个答案:

答案 0 :(得分:2)

可能是这样的:

select col1, col2, col3
from
( select row_number() r, col1 from mytab order by col1 desc ) a,
( select row_number() r, col2 from mytab order by col2 desc ) b,
( select row_number() r, col3 from mytab order by col3 desc ) c
where a.r = b.r
and a.r = c.r

答案 1 :(得分:1)

我假设您从同一个表中获取数据,这是导致问题的原因,因为,当说orderby时,db引擎假定行数据是一致的,不应该拆分,所以它命令只有第一个选择器,在你的情况下是col1。 解决方案是,通过它自己获取每个列,在单独的查询中进行排序,然后,您将获得结果。 所以,你会以简单的方式结束三个查询:

select col1 from table orderby col1 desc;

select col2 from table orderby col2 desc;

等等

答案 2 :(得分:0)

在查询中,您可以使用多个order by。但是你无法得到预期的结果。因为mysql会根据它的偏好来排序。即,mysql从左到右排序列。 假设您的查询如下:

select * from table order by col1 asc, col2 desc

其中,mysql首先按升序排序col1并显示结果。然后它按降序排列col2。所以二阶的结果显示不正确。它仅根据结果按顺序显示。最后你无法得到你想象的答案。