Bài 4 giới thiệu ORDER BY để sắp xếp kết quả truy vấn và LIMIT (kết hợp OFFSET) để giới hạn số dòng trả về, phục vụ các use case như lấy top N bản ghi hoặc phân trang dữ liệu.
🔥 4: ORDER BY & LIMIT trong SQL
Mục tiêu bài học: Hiểu cách sử dụng
ORDER BYđể sắp xếp kết quả truy vấn vàLIMITđể giới hạn số dòng trả về. Học cách kết hợp vớiOFFSETđể phân trang dữ liệu.
1️⃣ ORDER BY – Sắp xếp kết quả truy vấn
Lệnh ORDER BY giúp sắp xếp dữ liệu theo một hoặc nhiều cột, theo thứ tự tăng dần (ASC) hoặc giảm dần (DESC).
🔹 Cú pháp cơ bản
SELECT column1, column2
FROM table_name
ORDER BY column_name [ASC | DESC];
📌 Mặc định, ORDER BY sẽ sắp xếp theo thứ tự tăng dần (ASC).
📌 Ví dụ 1: Sắp xếp sản phẩm theo giá tăng dần
SELECT *
FROM Products
ORDER BY Price ASC;
➡️ Kết quả: Danh sách sản phẩm được sắp xếp theo giá từ thấp đến cao.
📌 Ví dụ 2: Sắp xếp sản phẩm theo giá giảm dần
SELECT *
FROM Products
ORDER BY Price DESC;
➡️ Kết quả: Danh sách sản phẩm được sắp xếp theo giá từ cao đến thấp.
2️⃣ LIMIT – Giới hạn số dòng kết quả
Lệnh LIMIT giúp giới hạn số lượng kết quả trả về từ truy vấn.
🔹 Cú pháp cơ bản
SELECT column1, column2
FROM table_name
ORDER BY column_name
LIMIT số_dòng;
📌 Ví dụ 1: Lấy 5 sản phẩm có giá thấp nhất
SELECT *
FROM Products
ORDER BY Price ASC
LIMIT 5;
➡️ Kết quả: 5 sản phẩm rẻ nhất trong danh sách.
📌 Ví dụ 2: Lấy 10 khách hàng mới nhất
SELECT *
FROM Customers
ORDER BY CreatedAt DESC
LIMIT 10;
➡️ Kết quả: 10 khách hàng được tạo gần đây nhất.
3️⃣ ORDER BY kết hợp với nhiều cột
Có thể sắp xếp theo nhiều cột cùng lúc để tối ưu kết quả truy vấn.
📌 Ví dụ 1: Sắp xếp sản phẩm theo danh mục (A → Z), sau đó theo giá giảm dần
SELECT *
FROM Products
ORDER BY Category ASC, Price DESC;
➡️ Kết quả: Danh sách sản phẩm được sắp xếp theo danh mục (A → Z), trong từng danh mục, sản phẩm có giá cao hơn được xếp trước.
📌 Ví dụ 2: Sắp xếp khách hàng theo ngày tạo tài khoản mới nhất và tên (A → Z)
SELECT *
FROM Customers
ORDER BY CreatedAt DESC, Name ASC;
➡️ Kết quả: Danh sách khách hàng mới nhất sẽ hiển thị trước, nếu có cùng ngày tạo, sẽ sắp xếp theo tên theo thứ tự A → Z.
4️⃣ LIMIT kết hợp với OFFSET – Phân trang
OFFSET giúp bỏ qua một số dòng đầu tiên trong kết quả trả về. Điều này hữu ích cho việc phân trang dữ liệu.
🔹 Cú pháp cơ bản
SELECT column1, column2
FROM table_name
ORDER BY column_name
LIMIT số_dòng OFFSET số_dòng_bỏ_qua;
📌 Ví dụ 1: Lấy 5 sản phẩm đắt nhất nhưng bỏ qua sản phẩm đắt nhất đầu tiên
SELECT *
FROM Products
ORDER BY Price DESC
LIMIT 5 OFFSET 1;
➡️ Kết quả: 5 sản phẩm đắt nhất nhưng bỏ qua sản phẩm có giá cao nhất.