Để sắp xếp theo nhiều cột, liệt kê các cột trong mệnh đề ORDER BY theo thứ tự ưu tiên (cột đầu tiên ưu tiên cao nhất).
Cú pháp
SELECT col1, col2, col3 FROM yourTableName ORDER BY col2, col3;
Ví dụ minh họa
Tạo bảng sinh viên có quốc gia:
CREATE TABLE doubleSortDemo (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(100),
StudentCountryName VARCHAR(10)
);
INSERT INTO doubleSortDemo (StudentName, StudentCountryName) VALUES
('John', 'AUS'), ('Sam', 'UK'), ('Bob', 'US'),
('Carol', 'UK'), ('David', 'AUS'), ('Larry', 'UK');
Dữ liệu gốc:
+-----------+-------------+--------------------+ | StudentId | StudentName | StudentCountryName | +-----------+-------------+--------------------+ | 1 | John | AUS | | 2 | Sam | UK | | 3 | Bob | US | | 4 | Carol | UK | | 5 | David | AUS | | 6 | Larry | UK | +-----------+-------------+--------------------+
Sắp xếp theo Quốc gia (A-Z), sau đó theo Tên (A-Z):
SELECT StudentId, StudentName, StudentCountryName FROM doubleSortDemo ORDER BY StudentCountryName, StudentName;
Kết quả:
+-----------+-------------+--------------------+ | StudentId | StudentName | StudentCountryName | +-----------+-------------+--------------------+ | 5 | David | AUS | | 1 | John | AUS | | 4 | Carol | UK | | 6 | Larry | UK | | 2 | Sam | UK | | 3 | Bob | US | +-----------+-------------+--------------------+
Giải thích:
- Nhóm AUS lên trước (A < U), trong AUS: David < John.
- Tiếp theo UK: Carol < Larry < Sam.
- Cuối cùng US: Bob.
Mở rộng: Thêm ASC (mặc định) hoặc DESC cho từng cột: ORDER BY StudentCountryName ASC, StudentName DESC.