3

I have 1 table with 6 columns all are tinyint with 1 digit. I need a query to return the data sorted (ordered) desc in each column.

example:

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

expected result:

  2      7        7
  1      3        5 
  1      2        3

I tried order by col1, col2 DESC but it only affects the first column (maybe because it's from the same table?) thx, Danny

4

3 回答 3

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
于 2013-09-24T17:31:43.567 回答
1

我假设您从同一个表中获取数据,这就是导致您出现问题的原因,因为在说 orderby 时,数据库引擎假定行数据是一致的并且不应该被拆分,所以它只使用第一个选择器,在您的情况下是 col1 。解决方案是,在单独的查询中按自己的顺序获取每一列,然后,您将获得结果。因此,您将以简单的方式完成三个查询:

select col1 from table orderby col1 desc;

select col2 from table orderby col2 desc;

等等

于 2013-09-24T17:35:50.180 回答
0

在一个查询中,您可以使用多个 order by。但是你不能得到预期的结果。因为mysql会根据自己的喜好排序。即,mysql 从左到右对列进行排序。假设您的查询是这样的:

select * from table order by col1 asc, col2 desc

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

于 2014-01-04T04:53:27.013 回答