SQL - TOP, LIMIT หรือ ROWNUM Clause
SQL TOP อนุประโยคใช้เพื่อดึงข้อมูลหมายเลข TOP N หรือ X เปอร์เซ็นต์จากตาราง
Note- ฐานข้อมูลทั้งหมดไม่รองรับคำสั่ง TOP ตัวอย่างเช่น MySQL รองรับไฟล์LIMIT อนุประโยคเพื่อดึงข้อมูลจำนวน จำกัด ในขณะที่ Oracle ใช้ไฟล์ ROWNUM คำสั่งเพื่อดึงข้อมูลจำนวน จำกัด
ไวยากรณ์
ไวยากรณ์พื้นฐานของประโยค TOP ที่มีคำสั่ง SELECT จะเป็นดังนี้
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE [condition]
ตัวอย่าง
พิจารณาตารางลูกค้าที่มีบันทึกต่อไปนี้ -
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
แบบสอบถามต่อไปนี้เป็นตัวอย่างบนเซิร์ฟเวอร์ SQL ซึ่งจะดึงข้อมูล 3 อันดับแรกจากตาราง CUSTOMERS
SQL> SELECT TOP 3 * FROM CUSTOMERS;
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
+----+---------+-----+-----------+---------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+---------+-----+-----------+---------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
+----+---------+-----+-----------+---------+
หากคุณใช้เซิร์ฟเวอร์ MySQL นี่คือตัวอย่างที่เทียบเท่า -
SQL> SELECT * FROM CUSTOMERS
LIMIT 3;
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
+----+---------+-----+-----------+---------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+---------+-----+-----------+---------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
+----+---------+-----+-----------+---------+
หากคุณกำลังใช้เซิร์ฟเวอร์ Oracle บล็อกโค้ดต่อไปนี้จะมีตัวอย่างที่เทียบเท่ากัน
SQL> SELECT * FROM CUSTOMERS
WHERE ROWNUM <= 3;
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
+----+---------+-----+-----------+---------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+---------+-----+-----------+---------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
+----+---------+-----+-----------+---------+