データ抽出するときは、必ず指定して方がよいですね。
意図しない並びで抽出してしまいます。
ORDER BY とは
SELECT文で抽出したデータの並び替えをします。
構文
例: SELECT * FROM t_test ORDER BY COL1,COL2 DESC
ORDER BYの後に並び順にしたいカラムを書いていきます。
上記例は、ソート順 COL1の昇順、COL2の降順になります。
次に具体的な使い方を載せておきます。
使い方
1つのカラム(列)の昇順で並び替えする場合
以下のような t_test というテーブルがあったとします。
COL1 | COL2 |
3 | A |
2 | B |
1 | C |
4 | D |
カラムのCOL1の昇順で並び替えします。
select * from t_test order by col1;
実行すると以下のような結果になります。
COL1 | COL2 |
1 | C |
2 | B |
3 | A |
4 | D |
降順で並び替えする場合(DESC を使う)
以下のような t_test というテーブルがあったとします。
COL1 | COL2 |
3 | A |
2 | B |
1 | C |
4 | D |
カラムのCOL1の降順で並び替えします。
select * from t_test order by col1 desc;
実行すると以下のような結果になります。
COL1 | COL2 |
4 | D |
3 | A |
2 | B |
1 | C |
複数のカラム(列)を昇順で並び替えする場合
以下のような t_test というテーブルがあったとします。
COL1 | COL2 |
4 | D |
4 | A |
2 | C |
2 | B |
カラムCOL1の昇順で並び替え後、カラムCOL2の昇順で並び替える。
select * from t_test order by col1,col2;
実行すると以下のような結果になります。
COL1 | COL2 |
2 | B |
2 | C |
4 | A |
4 | D |
昇順、降順(DESC)を混合でソートする場合
以下のような t_test というテーブルがあったとします。
COL1 | COL2 |
4 | D |
4 | A |
2 | C |
2 | B |
カラムCOL1の昇順で並び替え後、カラムCOL2の降順で並び替える。
select * from t_test order by col1,col2 desc;
実行すると以下のような結果になります。
COL1 | COL2 |
2 | C |
2 | B |
4 | D |
4 | A |
GROUP BY と ORDER BY の組み合せ方
以下のような t_test というテーブルがあったとします。
COL1 | COL2 |
4 | D |
4 | A |
2 | C |
2 | B |
カラムCOL1でグループ化して、COL1で昇順に並び替える。
select col1 from t_test group by col1 order by col1;
実行すると以下のような結果になります。
COL1 |
2 |
4 |
ORDER BYで指定できるカラムは、で指定した
カラムだけということを注意してください。
注意点
明示的にORDER BYを設定するべき、意図しない並びで抽出されます。(DB仕様により異なる)
GROUP BYしたカラムだけ、ORDER BYするカラムとして利用できる。