- ORDER BY は、テーブルからレコードを昇順または降順でフェッチするために SELECT クエリで使用される SQL の句です。
- テーブルの列に格納されている整数と文字列値を並べ替えるのと同じように、SQL テーブルの列に格納されている日付を並べ替えることができます。
- デフォルトでは、すべてのレコードが昇順に並べ替えられます。レコードを降順に並べ替えるには、DESC キーワードを使用します。
この概念をより明確に理解するために、いくつかの実際的な例を見てみましょう。すべてのクエリの作成には MySQL データベースを使用します。
次のデータを含む MySQL データベースにemployeesという名前のテーブルを作成したとします。
ID | 名前 | 給料 | 入社日 | 生年月日 |
---|---|---|---|---|
1 | ロヒット・モア | 50000 | 2020-02-08 | 1991-01-28 18:06:08 |
2 | クナル・モヒット | 34000 | 2021-01-01 | 1990-05-15 19:10:00 |
3 | サウラブ・ジャ | 61000 | 2015-05-01 | 1983-02-20 12:18:45 |
4 | アナント・デサイ | 59000 | 2018-08-27 | 1978-06-29 15:45:13 |
5 | クリシュナ・シャルマ | 48000 | 2010-10-23 | 1999-03-21 02:14:56 |
6 | バベシュ・ジャイナ教 | 37000 | 2021-07-03 | 1998-08-02 13:00:01 |
例 1:
従業員のすべての詳細を生年月日の昇順に並べて表示するクエリを作成します。
クエリ:
mysql> SELECT *FROM employees ORDER BY DOB;
レコードを従業員の生年月日の昇順に並べ替えたいため、列「DOB」に ORDER BY 句を適用しました。
次の出力が得られます。
ID | 名前 | 給料 | 入社日 | 生年月日 |
---|---|---|---|---|
4 | アナント・デサイ | 59000 | 2018-08-27 | 1978-06-29 15:45:13 |
3 | サウラブ・ジャ | 61000 | 2015-05-01 | 1983-02-20 12:18:45 |
2 | クナル・モヒット | 34000 | 2021-01-01 | 1990-05-15 19:10:00 |
1 | ロヒット・モア | 50000 | 2020-02-08 | 1991-01-28 18:06:08 |
6 | バベシュ・ジャイナ教 | 37000 | 2021-07-03 | 1998-08-02 13:00:01 |
5 | クリシュナ・シャルマ | 48000 | 2010-10-23 | 1999-03-21 02:14:56 |
上記のクエリから得られた結果は、レコードが DOB の昇順に従って表示されていることを示しています。
例 2:
従業員のすべての詳細を入社日の降順に表示するクエリを作成します。
クエリ:
フォントギンプ
mysql> SELECT *FROM employees ORDER BY Joining_Date DESC;
従業員の入社日の降順でレコードを並べ替えたいため、「Joining_Date」列に DESC キーワードを指定した ORDER BY 句を適用しました。
次の出力が得られます。
ID | 名前 | 給料 | 入社日 | 生年月日 |
---|---|---|---|---|
6 | バベシュ・ジャイナ教 | 37000 | 2021-07-03 | 1998-08-02 13:00:01 |
2 | クナル・モヒット | 34000 | 2021-01-01 | 1990-05-15 19:10:00 |
1 | ロヒット・モア | 50000 | 2020-02-08 | 1991-01-28 18:06:08 |
4 | アナント・デサイ | 59000 | 2018-08-27 | 1978-06-29 15:45:13 |
3 | サウラブ・ジャ | 61000 | 2015-05-01 | 1983-02-20 12:18:45 |
5 | クリシュナ・シャルマ | 48000 | 2010-10-23 | 1999-03-21 02:14:56 |
上記のクエリから得られた結果は、レコードが結合日の降順に従って表示されていることを示しています。
例 3:
従業員のすべての詳細を誕生年の昇順に並べて表示するクエリを作成します。
クエリ:
mysql> SELECT ID, Name, Salary, Joining_Date, DATE_FORMAT (DOB, '%Y') AS Year_of_Birth FROM employees ORDER BY DATE_FORMAT (DOB, '%Y');
従業員の誕生年の昇順にレコードを並べ替えたいため、ORDER BY 句を適用しました。 DATE_FORMAT () 関数は、パラメーター '%Y' を使用して DOB 列に適用され、'DOB' から年のみを抽出します。
次の出力が得られます。
ID | 名前 | 給料 | 入社日 | 生年 |
---|---|---|---|---|
4 | アナント・デサイ | 59000 | 2018-08-27 | 1978年 |
3 | サウラブ・ジャ | 61000 | 2015-05-01 | 1983年 |
2 | クナル・モヒット | 34000 | 2021-01-01 | 1990年 |
1 | ロヒット・モア | 50000 | 2020-02-08 | 1991年 |
6 | バベシュ・ジャイナ教 | 37000 | 2021-07-03 | 1998年 |
5 | クリシュナ・シャルマ | 48000 | 2010-10-23 | 1999年 |
上記のクエリから得られた結果は、レコードが従業員の生年月日の昇順に従って表示されていることを示しています。
例 4:
Javaをアップグレードする方法
従業員のすべての詳細を出生時間の降順に表示するクエリを作成します。
クエリ:
mysql> SELECT ID, Name, Salary, Joining_Date, DATE_FORMAT (DOB, '%H') AS Hour_Of_Birth FROM employees ORDER BY DATE_FORMAT (DOB, '%H') DESC;
レコードを従業員の出生時間の降順に並べ替えたいため、DESC キーワードを使用して ORDER BY 句を適用しました。 DATE_FORMAT () 関数は、パラメーター '%H' を使用して DOB 列に適用され、列 'DOB' から出生時間のみを抽出します。
次の出力が得られます。
ID | 名前 | 給料 | 入社日 | 誕生時間 |
---|---|---|---|---|
2 | クナル・モヒット | 34000 | 2021-01-01 | 19 |
1 | ロヒット・モア | 50000 | 2020-02-08 | 18 |
4 | アナント・デサイ | 59000 | 2018-08-27 | 15 |
6 | バベシュ・ジャイナ教 | 37000 | 2021-07-03 | 13 |
3 | サウラブ・ジャ | 61000 | 2015-05-01 | 12 |
5 | クリシュナ・シャルマ | 48000 | 2010-10-23 | 02 |
上記のクエリから得られた結果は、レコードが従業員の出生時間の降順に従って表示されていることを示しています。
例 5:
従業員のすべての詳細を入社年の昇順に並べて表示するクエリを作成します。
クエリ:
mysql> SELECT ID, Name, Salary, DOB, DATE_FORMAT (Joining_Date, '%Y') AS Year_Of_Joining FROM employees ORDER BY DATE_FORMAT (Joining_Date, '%Y');
社員の入社年の昇順に並べ替えたいので、ORDER BY句を適用しました。 DATE_FORMAT () 関数は、パラメーター '%Y' を使用して列 Joining_Date に適用され、'Joining_Date' から年のみを抽出します。
次の出力が得られます。
ID | 名前 | 給料 | 入社年 | 生年月日 |
---|---|---|---|---|
5 | クリシュナ・シャルマ | 48000 | 2010年 | 1999-03-21 02:14:56 |
3 | サウラブ・ジャ | 61000 | 2015年 | 1983-02-20 12:18:45 |
4 | アナント・デサイ | 59000 | 2018年 | 1978-06-29 15:45:13 |
1 | ロヒット・モア | 50000 | 2020年 | 1991-01-28 18:06:08 |
2 | クナル・モヒット | 34000 | 2021年 | 1990-05-15 19:10:00 |
6 | バベシュ・ジャイナ教 | 37000 | 2021年 | 1998-08-02 13:00:01 |
上記のクエリで得られた結果は、社員の入社年の昇順でレコードが表示されていることがわかります。
例6:
従業員の入社日の降順に並べて従業員のすべての詳細を表示するクエリを作成します。
クエリ:
mysql> SELECT ID, Name, Salary, DAY (Joining_Date) AS Day_Of_Joining, DOB FROM employees ORDER BY DAY (Joining_Date) DESC;
従業員の入社日の降順にレコードを並べ替えたいため、DESC キーワードを使用して ORDER BY 句を適用しました。 「Joining_Date」列にDAY()関数を適用し、Joining_Dateから参加日のみを抽出します。
次の出力が得られます。
ID | 名前 | 給料 | 参加日 | 生年月日 |
---|---|---|---|---|
4 | アナント・デサイ | 59000 | 27 | 1978-06-29 15:45:13 |
5 | クリシュナ・シャルマ | 48000 | 23 | 1999-03-21 02:14:56 |
1 | ロヒット・モア | 50000 | 8 | 1991-01-28 18:06:08 |
6 | バベシュ・ジャイナ教 | 37000 | 3 | 1998-08-02 13:00:01 |
2 | クナル・モヒット | 34000 | 1 | 1990-05-15 19:10:00 |
3 | サウラブ・ジャ | 61000 | 1 | 1983-02-20 12:18:45 |
上記クエリの結果は、社員の入社日の降順にレコードが表示されていることがわかります。
例 7:
従業員の誕生日の昇順に並べて従業員のすべての詳細を表示するクエリを作成します。
クエリ:
mysql> SELECT ID, Name, Salary, Joining_Date, DAY (DOB) AS Day_Of_Birth FROM employees ORDER BY DAY (DOB);
従業員の生年月日の昇順に並べ替えたいため、ORDER BY 句を適用しました。 DAY()関数を「生年月日」列に適用し、生年月日から生年月日のみを抽出します。
次の出力が得られます。
ID | 名前 | 給料 | 入社年 | 生まれた日 |
---|---|---|---|---|
6 | バベシュ・ジャイナ教 | 37000 | 2021-07-03 | 2 |
2 | クナル・モヒット | 34000 | 2021-01-01 | 15 |
3 | サウラブ・ジャ | 61000 | 2015-05-01 | 二十 |
5 | クリシュナ・シャルマ | 48000 | 2010-10-23 | 21 |
1 | ロヒット・モア | 50000 | 2020-02-08 | 28 |
4 | アナント・デサイ | 59000 | 2018-08-27 | 29 |
上記のクエリから得られた結果は、レコードが従業員の生年月日の昇順に従って表示されていることを示しています。
例 8:
従業員の誕生月の昇順に並べて従業員のすべての詳細を表示するクエリを作成します。
クエリ:
Javaでcatchブロックを試してください
mysql> SELECT ID, Name, Salary, Joining_Date, DOB FROM employees ORDER BY MONTH (DOB);
ID | 名前 | 給料 | 入社日 | 生年月日 |
---|---|---|---|---|
1 | ロヒット・モア | 50000 | 2020-02-08 | 1991-01-28 18:06:08 |
3 | サウラブ・ジャ | 61000 | 2015-05-01 | 1983-02-20 12:18:45 |
5 | クリシュナ・シャルマ | 48000 | 2010-10-23 | 1999-03-21 02:14:56 |
2 | クナル・モヒット | 34000 | 2021-01-01 | 1990-05-15 19:10:00 |
4 | アナント・デサイ | 59000 | 2018-08-27 | 1978-06-29 15:45:13 |
6 | バベシュ・ジャイナ教 | 37000 | 2021-07-03 | 1998-08-02 13:00:01 |
上記のクエリから得られた結果は、レコードが従業員の誕生月の昇順に従って表示されていることを示しています。
例9:
従業員のすべての詳細を入社月の昇順に並べて表示するクエリを作成します。
クエリ:
mysql> SELECT ID, Name, Salary, Joining_Date, DOB FROM employees ORDER BY MONTH (Joining_Date);
社員の入社月の昇順に並べ替えたいので、ORDER BY句を適用しました。 MONTH()関数を「Joining_Date」列に適用し、Joining_Dateから入社月のみを抽出します。
次の出力が得られます。
ID | 名前 | 給料 | 入社日 | 生年月日 |
---|---|---|---|---|
2 | クナル・モヒット | 34000 | 2021-01-01 | 1990-05-15 19:10:00 |
1 | ロヒット・モア | 50000 | 2020-02-08 | 1991-01-28 18:06:08 |
3 | サウラブ・ジャ | 61000 | 2015-05-01 | 1983-02-20 12:18:45 |
6 | バベシュ・ジャイナ教 | 37000 | 2021-07-03 | 1998-08-02 13:00:01 |
4 | アナント・デサイ | 59000 | 2018-08-27 | 1978-06-29 15:45:13 |
5 | クリシュナ・シャルマ | 48000 | 2010-10-23 | 1999-03-21 02:14:56 |
上記のクエリで得られた結果は、入社月の昇順でレコードが表示されていることがわかります。