Mệnh đề SQL TOP, LIMIT, FETCH FIRST hoặc ROWNUM
Mệnh đề CHỌN ĐẦU trong SQL
Mệnh SELECT TOP
đề được sử dụng để chỉ định số lượng bản ghi cần trả về.
Mệnh SELECT TOP
đề 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ợ
SELECT TOP
mệnh đề này. MySQL hỗ trợ LIMIT
mệnh đề chọn một số bản ghi hạn chế, trong khi Oracle sử dụng và .
FETCH FIRST n ROWS ONLY
ROWNUM
Cú pháp SQL Server / MS Access:
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;
Cú pháp MySQL:
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
Cú pháp Oracle 12:
SELECT column_name(s)
FROM table_name
ORDER BY
column_name(s)
FETCH FIRST number ROWS ONLY;
Cú pháp Oracle cũ hơn:
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;
Cú pháp Oracle cũ hơn (với ORDER BY):
SELECT *
FROM (SELECT column_name(s) FROM table_name
ORDER BY column_name(s))
WHERE ROWNUM <= number;
Cơ sở dữ liệu Demo
Dưới đây là lựa chọn từ bảng "Khách hàng" trong cơ sở dữ liệu mẫu Northwind:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 |
Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Ví dụ về SQL TOP, LIMIT và FETCH FIRST
Câu lệnh SQL sau chọn ba bản ghi đầu tiên từ bảng "Khách hàng" (dành cho SQL Server / MS Access):
Thí dụ
SELECT TOP 3 * FROM Customers;
Câu lệnh SQL sau đây hiển thị ví dụ tương đương cho MySQL:
Thí dụ
SELECT * FROM Customers
LIMIT 3;
Câu lệnh SQL sau đây hiển thị ví dụ tương đương cho Oracle:
Thí dụ
SELECT * FROM Customers
FETCH FIRST 3 ROWS ONLY;
Ví dụ về SQL TOP PERCENT
Câu lệnh SQL sau chọn 50% bản ghi đầu tiên từ bảng "Khách hàng" (dành cho SQL Server / MS Access):
Thí dụ
SELECT TOP 50 PERCENT * FROM Customers;
Câu lệnh SQL sau đây hiển thị ví dụ tương đương cho Oracle:
Thí dụ
SELECT * FROM Customers
FETCH FIRST 50 PERCENT ROWS ONLY;
THÊM KHOẢN KHIẾU NẠI Ở ĐÂU
Câu lệnh SQL sau chọn ba bản ghi đầu tiên từ bảng "Khách hàng", trong đó quốc gia là "Đức" (đối với SQL Server / MS Access):
Thí dụ
SELECT TOP 3 * FROM Customers
WHERE Country='Germany';
Câu lệnh SQL sau đây hiển thị ví dụ tương đương cho MySQL:
Thí dụ
SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;
Câu lệnh SQL sau đây hiển thị ví dụ tương đương cho Oracle:
Thí dụ
SELECT * FROM Customers
WHERE Country='Germany'
FETCH FIRST 3 ROWS ONLY;