Mệnh đề SELECT TOP trong SQL

SELECT TOP không thống nhất giữa các bản của SQL. Mệnh đề SELECTTOP được sử dụng để chỉ định số lượng bản ghi cần trả về. Mệnh đề SELECTTOP hữu ích trên các bảng lớn với hàng nghìn bản ghi. Trả lại một số lượng lớn bản ghi có thể ảnh hưởng đến hiệu suất.

Lưu ý: Không phải tất cả các hệ thống cơ sở dữ liệu đều hỗ trợ mệnh đề SELECT TOP này. MySQL hỗ trợ mệnh đề LIMITchọn một số bản ghi hạn chế, trong khi Oracle sử dụng FETCH FIRST n ROWS ONLY và ROWNUM.

SQL Server / MS Access Syntax:

MySQL Syntax:

Oracle 12 Syntax:

Older Oracle Syntax:

Older Oracle Syntax (with ORDER BY):

Bạn có thể download cơ sở dữ liệu Northwind để bắt đầu thực hành tại đây:

- Dành cho Sql Server, MS Access Download
- Dành cho Mysql: Tạo bảng trước với Download Table sau đó hãy điền data với Download Data
- Dành cho Oracle Download

Lưu ý: Tên bảng trong CSDL cho SQL Server thường được viết hoa chữ đầu. Với Mysql thì tên bảng được viết thường. Và với Oracle thì tên bảng toàn bộ được viết hoa. Bạn hãy viết đúng tên bảng trong query của mình nhé.

Trong nội dung bài viết, đôi khi tên bảng được viết dưới dạng tiếng Việt, ví dụ:

- Customers: Khách hàng
- Orders: Đơn hàng
- Employees: Nhân viên
- Shipers: Giao hàng
- Invoices: Hoá đơn

Ví dụ SQL TOP, LIMIT và FETCH FIRST

Câu lệnh SQL sau chọn ba bản ghi đầu tiên từ bảng “Customers” (dành cho SQL Server / MS Access):

Câu lệnh SQL sau đây hiển thị ví dụ tương đương cho MySQL:

Câu lệnh SQL sau đây hiển thị ví dụ tương đương cho Oracle:

Ví dụ về SQL TOP PERCENT

Câu lệnh SQL sau chọn 50% bản ghi đầu tiên từ bảng “Customers” (dành cho SQL Server / MS Access):

Câu lệnh SQL sau đây hiển thị ví dụ tương đương cho Oracle:

Trong Mysql không hỗ trợ cú pháp này, tuy nhiên bạn có thể dùng thủ thuật sau với LIMIT:

SELECT * 
FROM Customers
LIMIT 1 OFFSET (SELECT 0.5 * COUNT(*) FROM Customers));

Bạn có thể kết hợp với mệnh đề WHERE.

Leave a comment

Your email address will not be published. Required fields are marked *