web-dev-qa-db-ja.com

SQLの複数列の順序

私は、SQL内の複数の列、およびさまざまな方向でソートしようとしています。 column1は降順、column2は昇順にソートされます。

これどうやってするの?

ORDER BY column1 DESC, column2

これは、最初にcolumn1(降順)で、次に2つ以上の行のcolumn2フィールドが等しい場合は常にcolumn1(昇順)ですべてをソートします。

901

他の答えは具体例を欠いています、それでここに行きます:

次の People テーブルを考えます。

 FirstName |  LastName   |  YearOfBirth
----------------------------------------
  Thomas   | Alva Edison |   1847
  Benjamin | Franklin    |   1706
  Thomas   | More        |   1478
  Thomas   | Jefferson   |   1826

下記のクエリを実行すると:

SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC

結果セットは次のようになります。

 FirstName |  LastName   |  YearOfBirth
----------------------------------------
  Thomas   | More        |   1478
  Thomas   | Jefferson   |   1826
  Thomas   | Alva Edison |   1847
  Benjamin | Franklin    |   1706
SELECT  *
FROM    mytable
ORDER BY
        column1 DESC, column2 ASC
129
Quassnoi

複数列の順序は両方の列の対応する値に依存します。これはアルファベットと数字で名前が付けられた2つの列とascおよびdesc ordersの表の例です。

enter image description here

以下のコマンドを実行して、これら2つの列で Order By を実行します。

enter image description here

ここでも、これら2つの列に新しい値を挿入します。ここで、アルファベット値はASCの順序で並んでいます。

enter image description here

exampleテーブルの列は次のようになります。もう一度同じ操作を実行します。

enter image description here

最初の列の値はdesc順になっていますが、2番目の列はASC順になっていません。

13
Jason Clark

複数の条件で複数の順序を使用できます。

ORDER BY 
     (CASE 
        WHEN @AlphabetBy = 2  THEN [Drug Name]
      END) ASC,
    CASE 
        WHEN @TopBy = 1  THEN [Rx Count]
        WHEN @TopBy = 2  THEN [Cost]
        WHEN @TopBy = 3  THEN [Revenue]
    END DESC 
4
atik sarker