TOP

SQL TOP، LIMIT، FETCH FIRST وROWNUM

وصف SQL SELECT TOP

يتم استخدام التعبير SELECT TOP لتحديد عدد السجلات المراد تحديدها.

يعد SQL SELECT TOP مفيدًا للجداول الكبيرة التي تحتوي على آلاف السجلات، حيث أن إرجاع عدد كبير من السجلات يمكن أن يؤثر على أداء النظام.


لا تدعم كافة أنظمة قواعد البيانات التعبير SELECT TOP. يدعم MySQL التعبير LIMIT لتحديد عدد محدود من السجلات، بينما يستخدم Oracle FETCH FIRST n ROWS ONLY وROWNUM.

SQL Server / MS Access بناء الجملة:

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition

MySQL بناء الجملة:

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number

Oracle 12 بناء الجملة:

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY

بناء جملة Oracle المهملة:

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number

بناء جملة Oracle القديم (مع ORDER BY):

SELECT *
FROM (SELECT column_name(s) FROM table_name ORDER BY column_name(s))
WHERE ROWNUM <= number

قاعدة البيانات التوضيحية

ما يلي هو نموذج من جدول "Customers" ("العملاء") لقاعدة البيانات "Northwind":

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

أمثلة SQL TOP وLIMIT وFETCH FIRST

تحدد عبارة SQL التالية السجلات الثلاثة الأولى من الجدول "Customers" (لـ SQL Server/MS Access):

SELECT TOP 3 * 
FROM Customers

تعرض عبارة SQL التالية مثالًا مكافئًا لـ MySQL:

Run SQLSELECT * 
FROM Customers 
LIMIT 3

تعرض عبارة SQL التالية مثالًا مكافئًا لـ Oracle:

SELECT * 
FROM Customers 
FETCH FIRST 3 ROWS ONLY

مثال SQL TOP PERCENT

تحدد عبارة SQL التالية أول 50% من السجلات من الجدول "Customers" (لـ SQL Server/MS Access):

SELECT TOP 50 PERCENT * 
FROM Customers

تعرض عبارة SQL التالية مثالًا مكافئًا لـ Oracle:

SELECT * 
FROM Customers 
FETCH FIRST 50 PERCENT ROWS ONLY

باستخدام التعبير WHERE

تحدد عبارة SQL التالية السجلات الثلاثة الأولى من الجدول "Customers" حيث تكون الدولة "Germany" (لـ SQL Server/MS Access):

SELECT TOP 3 * 
FROM Customers 
WHERE Country = 'Germany'

تعرض عبارة SQL التالية مثالًا مكافئًا لـ MySQL:

Run SQLSELECT * 
FROM Customers 
WHERE Country = 'Germany' 
LIMIT 3

تعرض عبارة SQL التالية مثالًا مكافئًا لـ Oracle:

SELECT * 
FROM Customers 
WHERE Country = 'Germany' 
FETCH FIRST 3 ROWS ONLY