このチュートリアルは、MySQLを使用した基本的なSQLクエリの学習シリーズの一部です。このチュートリアルでは、キーワードASCまたはDESCを指定してORDER BY句を使用し、MySQLでテーブル行の並べ替えを実行して昇順または降順で並べ替えるSQLクエリについて説明します。
クエリによる注文
注文者 句を使用して、テーブルの行を昇順または降順で並べ替えることができます。
# ORDER BY - Syntax - Default Ascending
SELECT * FROM `table_name` ORDER BY `column_name`;
# ORDER BY - Syntax - Ascending
SELECT * FROM `table_name` ORDER BY `column_name` ASC;
# ORDER BY - Syntax - Descending
SELECT * FROM `table_name` ORDER BY `column_name` DESC;
クエリの説明
注文者 句を使用して、並べ替えに使用する列を指定することにより、行を並べ替えることができます。 WHEREでORDERBY句を使用して、並べ替えでフィルターまたは検索操作を実行することもできます。
行を並べ替えるには、ORDERBY句を使用して少なくとも1つの列を指定する必要があります。また、ASCまたはDESCキーワードをそれぞれ使用して、行を昇順または降順で並べ替える順序を指定することもできます。
複数の並べ替え操作を適用することもできます。この場合、最初に来る並べ替え操作によって返された結果に続いて、後続の並べ替えを適用できます。
例
このセクションでは、WHERE句がある場合とない場合のORDERBY句を使用して並べ替えを実行する例を示します。以下のクエリを使用して、ID、名、姓、およびユーザーデータを格納するアクティブな列を持つユーザーテーブルを作成します。
# Create the User Table
CREATE TABLE `enterprise`.`user` (
`user_id` BIGINT NOT NULL,
`first_name` VARCHAR(45) ,
`last_name` VARCHAR(45),
`active` TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`user_id`));
下記のクエリを使用して、ユーザーテーブルにデータを挿入できます。
# Insert Rows - All Columns
INSERT INTO `user` ( `user_id`, `first_name`, `last_name`, `active` ) VALUES
( 1, 'John', 'Smith', 1 ),
( 2, 'Rick', 'Jones', 1 ),
( 3, 'John', 'Ponting', 0 ),
( 4, 'Harsh', 'Upadhyay', 1 ),
( 5, 'Tajwinder', 'Singh', 0 );
上記のクエリは、5つの異なるユーザーを表すために、ID、名、姓、およびアクティブな列を持つ5つの行をテーブルに挿入します。
次に、WHERE句を指定せずにORDER BY句を使用して、ユーザーテーブルの名または姓の列を使用して行を並べ替えます。以下に示すように、MySQLのORDERBY句を使用して実行できます。
# ORDER BY - Ascending
SELECT * FROM `user` ORDER BY `first_name`;
SELECT * FROM `user` ORDER BY `first_name` ASC;
# Result
4 Harsh Upadhyay 1
1 John Smith 1
3 John Ponting 0
2 Rick Jones 1
5 Tajwinder Singh 0
# ORDER BY - Descending
SELECT * FROM `user` ORDER BY `first_name` DESC;
# Result
5 Tajwinder Singh 0
2 Rick Jones 1
1 John Smith 1
3 John Ponting 0
4 Harsh Upadhyay 1
# ORDER BY - Ascending - Multiple
SELECT * FROM `user` ORDER BY `first_name`, `last_name`;
# Result
4 Harsh Upadhyay 1
3 John Ponting 0
1 John Smith 1
2 Rick Jones 1
5 Tajwinder Singh 0
上記のクエリは、ORDER BY句を使用して、昇順と降順で並べ替えを実行します。次に、以下に示すように、WHERE句を使用して行を並べ替えます。
# ORDER BY - Ascending - Filter active users
SELECT * FROM `user` WHERE `active` = 1 ORDER BY `first_name`;
# Result
4 Harsh Upadhyay 1
1 John Smith 1
2 Rick Jones 1
# ORDER BY - Descending - Filter active users
SELECT * FROM `user` WHERE `active` = 1 ORDER BY `first_name` DESC;
# Result
2 Rick Jones 1
1 John Smith 1
4 Harsh Upadhyay 1
これは、WHERE句がある場合とない場合のORDER BY句を使用して、特定の列のテーブルの行を並べ替える方法です。