Този урок е част от поредицата Научете основни SQL заявки с помощта на MySQL. В този урок ще обсъдим SQL заявките за извършване на сортиране на редовете на таблицата в MySQL с помощта на клаузата ORDER BY с ключовите думи ASC или DESC за сортиране във възходящ или низходящ ред.
Поръчай по заявка
ПОРЪЧКА от Клаузата може да се използва за извършване на сортиране на редовете на таблицата във възходящ или низходящ ред.
# 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;
Обяснение на заявката
ПОРЪЧАЙТЕ ОТ клаузата може да се използва за сортиране на редовете, като се посочи колоната, която да се използва за сортиране. Можем също да използваме клаузата ORDER BY с WHERE, за да извършим филтриране или операции за търсене със сортиране.
Трябва да посочим поне една колона, използвайки клаузата ORDER BY, за да сортираме редовете. Можем също да посочим реда за сортиране на редовете във възходящ или низходящ ред, използвайки съответно ключови думи ASC или DESC.
Можем също да приложим множество операции за сортиране, при които последващото сортиране може да се приложи след резултатите, върнати от операциите за сортиране, които са първи.
Примери
Този раздел предоставя примери за извършване на сортиране с помощта на клаузата ORDER BY със и без клауза WHERE. Използвайте посочената по-долу заявка, за да създадете потребителска таблица с идентификатор, собствено име, фамилия и активни колони за съхраняване на потребителски данни.
# 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 реда в таблицата с идентификатор, собствено име, фамилия и активни колони, за да представят 5 различни потребители.
Сега ще използваме клаузата ORDER BY без клаузата WHERE, за да сортираме редовете, използвайки колоните с име или фамилия на потребителската таблица. Може да се направи с помощта на клаузата ORDER BY в MySQL, както е показано по-долу.
# 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
Ето как можем да използваме клаузата ORDER BY със и без клаузата WHERE, за да сортираме редовете на таблицата за конкретните колони.