SQLでのレコードのソートにはORDER BY
句を利用します。
ORDER BY (フィールド1),(フィールド2), ...
フィールド1の値が同じレコードの場合は、フィールド2の値を比較して並び替えが実行されます。
逆順にソートする場合は DESC
をフィールド名の後ろに追加します。
ORDER BY (フィールド1) DESC, (フィールド2) DESC, ...
以下のテーブルがあります。
id | name | stockplace | category | price |
---|---|---|---|---|
1 | ぺんぎんクッキー | 1 | 1 | 180 |
2 | らくだキャラメル | 3 | 2 | 95 |
3 | しろくまアイス | 2 | 3 | 230 |
4 | かるがもサブレ | 1 | 1 | 160 |
5 | あるぱかカステラ | 2 | 2 | 420 |
6 | あひるタルト | 4 | 1 | 260 |
categoryでソートして、同じカテゴリの場合は、priceの高い順にソートします。
次のSQL文を実行します。
SELECT * FROM Products ORDER BY category, price DESC
以下の結果が表示されます。
categroyの値で昇順にソートされ、同じcategoryのレコードは priceの降順でソートされます。
id | name | stockplace | category | price |
---|---|---|---|---|
6 | あひるタルト | 4 | 1 | 260 |
1 | ぺんぎんクッキー | 1 | 1 | 180 |
4 | かるがもサブレ | 1 | 1 | 160 |
5 | あるぱかカステラ | 2 | 2 | 420 |
2 | らくだキャラメル | 3 | 2 | 95 |
3 | しろくまアイス | 2 | 3 | 230 |
レコードをソートできました。