Ten samouczek jest częścią serii Naucz się podstawowych zapytań SQL przy użyciu MySQL. W tym samouczku omówimy zapytania SQL służące do sortowania wierszy tabeli w MySQL za pomocą klauzuli ORDER BY ze słowami kluczowymi ASC lub DESC do sortowania w kolejności rosnącej lub malejącej.
Uporządkuj według zapytania
ZAMÓW DO Klauzula może być użyta do sortowania wierszy tabeli w kolejności rosnącej lub malejącej.
# 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;
Objaśnienie zapytania
ORDER BY Klauzula może służyć do sortowania wierszy, określając kolumnę, która ma być używana do sortowania. Możemy również użyć klauzuli ORDER BY z WHERE, aby wykonać operacje filtrowania lub wyszukiwania z sortowaniem.
Musimy określić co najmniej jedną kolumnę za pomocą klauzuli ORDER BY do sortowania wierszy. Możemy również określić kolejność sortowania wierszy w kolejności rosnącej lub malejącej, odpowiednio za pomocą słów kluczowych ASC lub DESC.
Możemy również zastosować wiele operacji sortowania, w których kolejne sortowanie może być zastosowane po wynikach zwróconych przez operacje sortowania, które są pierwsze.
Przykłady
Ta sekcja zawiera przykłady wykonywania sortowania przy użyciu klauzuli ORDER BY z klauzulą WHERE i bez niej. Użyj poniższego zapytania, aby utworzyć tabelę użytkowników zawierającą identyfikator, imię, nazwisko i aktywne kolumny do przechowywania danych użytkownika.
# 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`));
Poniższe zapytanie może zostać użyte do wstawienia danych do tabeli użytkowników.
# 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 );
Wspomniane powyżej zapytanie wstawi do tabeli 5 wierszy z identyfikatorem, imieniem, nazwiskiem i aktywnymi kolumnami reprezentującymi 5 różnych użytkowników.
Teraz użyjemy klauzuli ORDER BY bez klauzuli WHERE, aby posortować wiersze według kolumn imion lub nazwisk w tabeli użytkowników. Można to zrobić za pomocą klauzuli ORDER BY w MySQL, jak pokazano poniżej.
# 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
Powyższe zapytania wykonują sortowanie w kolejności rosnącej i malejącej za pomocą klauzuli ORDER BY. Teraz posortujemy wiersze z klauzulą WHERE, jak pokazano poniżej.
# 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
W ten sposób możemy użyć klauzuli ORDER BY z klauzulą WHERE i bez niej, aby posortować wiersze tabeli pod kątem określonych kolumn.