Thứ Ba, 12 tháng 1, 2021

SQL TOP, LIMIT or ROWNUM

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:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1

Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4

Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

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;
Number of Records: 3

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany 
Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico 
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;
Number of Records: 3

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico

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: 46
CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany 
Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico 
Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico 
Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK 
Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden 
Blauer See Delikatessen Hanna Moos Forsterstr. 57 Mannheim 68306 Germany 
Blondel père et fils Frédérique Citeaux 24, place Kléber Strasbourg 67000 France 
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';
Number of Records: 3

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany 
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;
Number of Records: 3

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
6Blauer See DelikatessenHanna MoosForsterstr. 57Mannheim68306Germany
17Drachenblut DelikatessendSven OttliebWalserweg 21Aachen52066Germany

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

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master