Trong PostgreSQL, mệnh đề ORDER BY được sử dụng để sắp xếp kết quả của một truy vấn theo thứ tự tăng dần (ascending) hoặc giảm dần (descending) dựa trên một hoặc nhiều cột. Mệnh đề này thường được đặt ở cuối câu lệnh SELECT.

Cú pháp ORDER BY:

SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...;
  • ASC: Sắp xếp theo thứ tự tăng dần (đây là giá trị mặc định nếu không chỉ định).
  • DESC: Sắp xếp theo thứ tự giảm dần.

Ví dụ sắp xếp kết quả truy vấn

1. Sắp xếp theo thứ tự tăng dần (ASC)

Giả sử bạn có bảng employees với các cột namesalary. Bạn muốn sắp xếp danh sách nhân viên theo lương từ thấp đến cao:

SELECT name, salary
FROM employees
ORDER BY salary ASC;

2. Sắp xếp theo thứ tự giảm dần (DESC)

Nếu bạn muốn sắp xếp danh sách nhân viên theo lương từ cao đến thấp, bạn có thể sử dụng DESC:

SELECT name, salary
FROM employees
ORDER BY salary DESC;

3. Sắp xếp theo nhiều cột

Bạn có thể sắp xếp theo nhiều cột cùng lúc. Ví dụ, sắp xếp nhân viên theo salary trước, rồi nếu có cùng mức lương thì sắp xếp theo name theo thứ tự bảng chữ cái:

SELECT name, salary
FROM employees
ORDER BY salary DESC, name ASC;

4. Sắp xếp với biểu thức

Bạn cũng có thể sắp xếp theo các biểu thức hoặc phép tính toán trong câu truy vấn. Ví dụ, sắp xếp theo tổng thu nhập bằng cách cộng salary và một khoản thưởng (bonus):

SELECT name, salary, bonus
FROM employees
ORDER BY (salary + bonus) DESC;

5. Sắp xếp theo thứ tự của các giá trị cụ thể

PostgreSQL còn hỗ trợ sắp xếp theo thứ tự tùy chỉnh. Ví dụ, bạn muốn sắp xếp kết quả dựa trên một danh sách thứ tự đã định sẵn:

SELECT name, position
FROM employees
ORDER BY position = 'Manager' DESC, position = 'Engineer' DESC;

Lưu ý khi sử dụng ORDER BY

Số thứ tự cột: Bạn có thể sử dụng số thứ tự của cột thay vì tên cột trong ORDER BY. Ví dụ, cột thứ hai trong kết quả truy vấn có thể được sắp xếp như sau:

SELECT name, salary
FROM employees
ORDER BY 2 DESC; -- Sắp xếp theo cột thứ 2 (salary)

NULL và ORDER BY: PostgreSQL mặc định sắp xếp giá trị NULL theo thứ tự tăng dần. Bạn có thể tùy chỉnh cách sắp xếp NULL bằng cách thêm NULLS FIRST hoặc NULLS LAST:

SELECT name, salaryFROM employeesORDER BY salary ASC NULLS LAST;

Sử dụng ORDER BY giúp bạn dễ dàng sắp xếp kết quả truy vấn theo nhu cầu, cải thiện khả năng đọc và phân tích dữ liệu.