Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách sắp xếp nhiều cột cùng lúc trong MySQL

Để 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.