VillageSQL is a drop-in replacement for MySQL with extensions.
All examples on this page work on VillageSQL. Install Now →
ORDER BY だけです。
始める前に mysql -u root -p sakila でクライアントを開いてください。
ORDER BY の仕組み
SORT_COLUMN をソートの基準にする列に置き換えます。DIRECTION は、小さい
ものから並べる ASC か、大きいものから並べる DESC のどちらかです。省略
可能で、省略すると ASC になります。
例
- 1 つの列でソートする
- 逆順にソートする
- 2 つ目の列で同順位を解消する
ソート列を優先順にカンマで区切って並べます。各列はそれぞれの方向を
持ちます。
rental_rate が依然として先頭で、降順です。各料金の中では最も短い映画が
先に来ます。長さが等しい映画はまだ同順位なので、完全に決まった順序には、
すべての行を一意にするだけの列が必要です。
- エイリアスでソートする
ORDER BY は同じクエリの列のエイリアスを指定できます。
エイリアスはシングルクォートではなくバッククォートで囲む
空白を含むエイリアスは引用符で囲む必要があり、ここで 2 つの引用スタイルの 一致が崩れます。シングルクォートは名前ではなく文字列を作り、固定の文字列で ソートしても何もソートされません。'Rate' を 4 文字の単語として読み、すべての行を同じ値でソートしました。
エラーなし、警告なし、ソートなしです。
バッククォートはエイリアスを指し、ソートが行われます。
NULL はどこに並ぶか
列はNULL を保持でき、これは値がまったくないことを記録します。ゼロでも
空文字列でもありません。MySQL は NULL をすべての実際の値より小さいものとしてソート
するので、昇順では NULL が先頭に来ます。address の 603 行のうち、4 行には
address2 がありません。
NULL より大きく、どのテキストよりも小さいものとしてソートされます。この 4 つの
NULL 行は互いに同順位なので、それらの間の順序はこのクエリでは決まりません。
DESC はそれを逆にし、NULL は末尾に行きます。これは同じ結果を逆順に
ソートしたものの末尾です。
まとめ
- 結果の順序を決めるには
ORDER BYを使います。他に決めるものはありません。 - 大きいものから並べるには
DESCと書きます。ASCがデフォルトです。 - 同順位を解消するには、複数のソート列を優先順に並べます。
- エイリアスでソートするときはバッククォートで囲みます。シングルクォートは文字列を作るからです。
- 昇順では
NULLが先頭に、降順では末尾に来ます。
関連項目
- SELECT — ソートされる文
- 列のエイリアス — ソートの基準にする列に名前を付ける
- LIMIT — ソートした結果の最初の数行を取る
- MySQL のページネーション — 大きなテーブルでソートにかかるコスト