Mệnh đề TOP trong SQL
Mệnh đề SELECT TOP được sử dụng để chỉ định số lượng bản ghi 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ợ mệnh đề CHỌN ĐẦU. MySQL hỗ trợ mệnh đề LIMIT để chọn một số bản ghi giới hạn, trong khi Oracle sử dụng 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:
SELECT column_name(s)
FROM table_name
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 của 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à ROWNUM
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;
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 |
Câu lệnh SQL sau đây cho thấy ví dụ tương đương bằng cách sử dụng mệnh đề LIMIT (cho MySQL):
Thí dụ
SELECT * FROM Customers
LIMIT 3;
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 |
Câu lệnh SQL sau đây cho thấy ví dụ tương đương bằng cách sử dụng ROWNUM (dành cho Oracle):
Thí dụ
SELECT * FROM Customers
WHERE ROWNUM <= 3;
Ví dụ PERCENT trong SQL TOP
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;
Number of Records: 46CustomerID 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 6 Blauer See Delikatessen Hanna Moos Forsterstr. 57 Mannheim 68306 Germany 7 Blondel père et fils Frédérique Citeaux 24, place Kléber Strasbourg 67000 France 8 Bólido Comidas preparadas Martín Sommer C/ Araquil, 67 Madrid 28023 Spain
THÊM WHERE
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';
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
6 | Blauer See Delikatessen | Hanna Moos | Forsterstr. 57 | Mannheim | 68306 | Germany |
17 | Drachenblut Delikatessend | Sven Ottlieb | Walserweg 21 | Aachen | 52066 | Germany |
Câu lệnh SQL sau đây cho thấy ví dụ tương đương bằng cách sử dụng mệnh đề LIMIT (cho MySQL):
Thí dụ
SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
6 | Blauer See Delikatessen | Hanna Moos | Forsterstr. 57 | Mannheim | 68306 | Germany |
17 | Drachenblut Delikatessend | Sven Ottlieb | Walserweg 21 | Aachen | 52066 | Germany |
Câu lệnh SQL sau đây cho thấy ví dụ tương đương bằng cách sử dụng ROWNUM (dành cho Oracle):
Thí dụ
SELECT * FROM Customers
WHERE Country='Germany' AND ROWNUM <= 3;
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
#OracleTutorial #OracleDBA #OracleDatabaseAdministration #học oracle database #oca #ocp #tự học oracle