【SQL】ORDER BYを使った単・複数の並び替えと降順(DESC)の使い方

Oracle

データ抽出するときは、必ず指定して方がよいですね。
意図しない並びで抽出してしまいます。

ORDER BY とは

SELECT文で抽出したデータの並び替えをします。

構文

例: SELECT * FROM t_test ORDER BY COL1,COL2 DESC

ORDER BYの後に並び順にしたいカラムを書いていきます。
上記例は、ソート順 COL1の昇順、COL2の降順になります。
次に具体的な使い方を載せておきます。

使い方

1つのカラム(列)の昇順で並び替えする場合

以下のような t_test というテーブルがあったとします。

COL1COL2
3A
2B
1C
4D

カラムのCOL1の昇順で並び替えします。

select * from t_test order by col1;

実行すると以下のような結果になります。

COL1COL2
1C
2B
3A
4D

降順で並び替えする場合(DESC を使う)

以下のような t_test というテーブルがあったとします。

COL1COL2
3A
2B
1C
4D

カラムのCOL1の降順で並び替えします。

select * from t_test order by col1 desc;

実行すると以下のような結果になります。

COL1COL2
4D
3A
2B
1C

複数のカラム(列)を昇順で並び替えする場合

以下のような t_test というテーブルがあったとします。

COL1COL2
4D
4A
2C
2B

カラムCOL1の昇順並び替え後、カラムCOL2の昇順で並び替える。

select * from t_test order by col1,col2;

実行すると以下のような結果になります。

COL1COL2
2B
2C
4A
4D

昇順、降順(DESC)を混合でソートする場合

以下のような t_test というテーブルがあったとします。

COL1COL2
4D
4A
2C
2B

カラムCOL1の昇順で並び替え後、カラムCOL2の降順で並び替える。

select * from t_test order by col1,col2 desc;

実行すると以下のような結果になります。

COL1COL2
2C
2B
4D
4A

GROUP BY と ORDER BY の組み合せ方

以下のような t_test というテーブルがあったとします。

COL1COL2
4D
4A
2C
2B

カラム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するカラムとして利用できる。

 

タイトルとURLをコピーしました