Mệnh đề SQL TOP, LIMIT, FETCH FIRST hoặc ROWNUM
Mệnh đề SELECT TOP 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
rất hữu ích trên các bảng lớn có hàng nghìn bản ghi. Trả lại một số lượng lớn hồ sơ có thể ảnh hưởng đến hiệu suất.
Ví dụ
Chỉ chọn 3 bản ghi đầu tiên của bảng Khách hàng:
SELECT TOP 3 * FROM Customers;
Hãy tự mình thử » 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
. MySQL hỗ trợ mệnh đề LIMIT
để chọn một số lượng bản ghi giới hạn, trong khi Oracle sử dụng FETCH FIRST n ROWS ONLY
và ROWNUM
.
Cú pháp truy cập SQL Server/MS:
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 (có ĐẶT HÀNG BỞI):
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 được sử dụng trong các ví dụ:
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 |
GIỚI HẠN
Câu lệnh SQL sau đây hiển thị ví dụ tương đương cho MySQL:
TÌM KIẾM ĐẦU TIÊN
Câu lệnh SQL sau đây cho thấy ví dụ tương đương với Oracle:
Ví dụ
Chọn 3 bản ghi đầu tiên của bảng Khách hàng:
SELECT * FROM Customers
FETCH FIRST 3 ROWS ONLY;
Ví dụ về PHẦN TRĂM HÀNG ĐẦU trong SQL
Câu lệnh SQL sau đây chọn 50% bản ghi đầu tiên từ bảng "Khách hàng" (dành cho SQL Server/MS Access):
Câu lệnh SQL sau đây cho thấy ví dụ tương đương với Oracle:
Ví dụ
SELECT * FROM Customers
FETCH FIRST 50 PERCENT ROWS ONLY;
THÊM ĐIỀU KHOẢN WHERE
Câu lệnh SQL sau đây chọn ba bản ghi đầu tiên từ bảng "Khách hàng", trong đó quốc gia là "Đức" (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 cho thấy ví dụ tương đương với Oracle:
Ví dụ
SELECT * FROM Customers
WHERE Country='Germany'
FETCH FIRST 3 ROWS ONLY;
THÊM ĐẶT HÀNG THEO Từ khóa
Thêm từ khóa ORDER BY
khi bạn muốn sắp xếp kết quả và trả về 3 bản ghi đầu tiên của kết quả được sắp xếp.
Đối với SQL Server và MS Access:
Ví dụ
Sắp xếp kết quả đảo ngược theo thứ tự bảng chữ cái theo Tên khách hàng và trả về 3 bản ghi đầu tiên:
SELECT TOP 3 * FROM Customers
ORDER BY CustomerName DESC;
Hãy tự mình thử »Câu lệnh SQL sau đây hiển thị ví dụ tương đương cho MySQL:
Câu lệnh SQL sau đây cho thấy ví dụ tương đương với Oracle:
Ví dụ
SELECT * FROM Customers
ORDER BY CustomerName DESC
FETCH FIRST 3 ROWS ONLY;