サーチ…


ORDER BYをTOPと組み合わせて使用​​すると、列の値に基づいて上位x行が返されます

この例では、我々は唯一の行の並べ替えを決定していない、GROUP BYを使用することができます返されたが、また、我々は結果セットを制限するために、TOPを使用していることから、返さ何行。

無名の有名なQ&Aサイトから上位5名の評判ユーザーを返すとしましょう。

ORDER BYなし

この問合せは、デフォルトで順序付けられた上位5行(この場合は結果に表示されている列ではないにもかかわらず、この場合は「Id」)を表の最初の列として戻します。

SELECT TOP 5 DisplayName, Reputation
FROM Users

戻る...

表示名評判
コミュニティ 1
ジェフ・ダルガス 12567
ジャロッド・ディクソン 11739
ジェフアトウッド 37628
ジョエル・スピルスキー 25784

ORDER BYで

SELECT TOP 5 DisplayName, Reputation
FROM Users
ORDER BY Reputation desc

戻る...

表示名評判
JonSkeet 865023
ダーリン・ディミトロフ 661741
BalusC 650237
ハンス・パサント 625870
マーク・グラヴェル 601636

備考

一部のバージョンのSQL(MySQLなど)では、先頭にTOP代わりにSELECTの最後にLIMIT句を使用します。たとえば、次のようになります。

SELECT DisplayName, Reputation
FROM Users
ORDER BY Reputation DESC
LIMIT 5

複数の列による並べ替え

SELECT DisplayName, JoinDate, Reputation
FROM Users
ORDER BY JoinDate, Reputation
表示名 JoinDate 評判
コミュニティ 2008-09-15 1
ジェフアトウッド 2008-09-16 25784
ジョエル・スピルスキー 2008-09-16 37628
ジャロッド・ディクソン 2008年10月03日 11739
ジェフ・ダルガス 2008年10月03日 12567

列番号(名前の代わりに)でソート

名前の列を記述するのではなく、列の番号(一番左の列が '1')を使用して、並べ替えの基となる列を示すことができます。

Pro:後で列名を変更する可能性が高いと思われる場合は、このコードを破ることはありません。

Con:これは一般的にクエリの可読性を低下させます(「ORDER BY 14」は何らかのカウントを必要としますが、スクリーン上にはおそらく指で表示されます)。

このクエリは、列名Reputation代わりにselect文から相対カラム位置3情報で結果をソートします。

SELECT DisplayName, JoinDate, Reputation
FROM Users
ORDER BY 3
表示名 JoinDate 評判
コミュニティ 2008-09-15 1
ジャロッド・ディクソン 2008年10月03日 11739
ジェフ・ダルガス 2008年10月03日 12567
ジョエル・スピルスキー 2008-09-16 25784
ジェフアトウッド 2008-09-16 37628

エイリアス順

論理的なクエリ処理順序のために、エイリアスは、で順番に使用することができます。

SELECT DisplayName, JoinDate as jd, Reputation as rep
FROM Users
ORDER BY jd, rep

そして、select文の列の相対的な順序を使用することができます。上記の例を考えてください。別名を使用する代わりに、表示名のように相対的な順序を使用してください。Jdは1、Jdは2などです。

SELECT DisplayName, JoinDate as jd, Reputation as rep
FROM Users
ORDER BY 2, 3

カスタム注文の並べ替え順序

部門別にこのテーブルのEmployeeをソートするには、部門ORDER BY Departmentを使用します。ただし、ソート順がアルファベット順でない場合は、 Department値を正しくソートする別の値にマップする必要があります。これはCASE式で行うことができます:

部門
持っていますそれ
ユスフ HR
ヒラリー HR
ジョーそれ
メリー HR
ケン会計士
SELECT *
FROM Employee
ORDER BY CASE Department
         WHEN 'HR'         THEN 1
         WHEN 'Accountant' THEN 2
         ELSE                   3
         END;
部門
ユスフ HR
ヒラリー HR
メリー HR
ケン 会計士
持っています それ
ジョー それ


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow