3

6列のテーブルが1つあり、すべてが1桁のtinyintです。各列で並べ替えられた (順序付けられた) デスク データを返すクエリが必要です。

例:

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

期待される結果:

  2      7        7
  1      3        5 
  1      2        3

col1、col2 DESC で並べ替えてみましたが、最初の列にのみ影響します (同じテーブルからのものなのでしょうか?) 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 に答える
0

クエリでは、複数の order by を使用できます。しかし、期待した結果は得られません。mysql はその設定に基づいて注文するためです。つまり、mysql は列を左から右に並べました。次のようなクエリを考えてみましょう:

select * from table order by col1 asc, col2 desc

ここで、mysql は最初に col1 を昇順で並べ替え、結果を表示します。次に、col2 を降順に並べました。そのため、2nd order by の結果が正しく表示されません。結果順のみで表示しました。最後に、期待どおりの答えが得られません。

于 2014-01-04T04:53:27.013 に答える