ใช้ ORDER BY DESC ร่วมกับ LIMIT เพื่อหาค่าอันดับที่ N จากสูงสุด
รูปแบบไวยากรณ์
- อันดับที่ 2:
LIMIT 1,1(ข้าม 1 แถว แล้ว取 1 แถว) - อันดับที่ 4:
LIMIT 3,1(ข้าม 3 แถว แล้ว取 1 แถว) - อันดับที่ 1:
LIMIT 1(หรือLIMIT 0,1)
หลักการ: LIMIT offset, count โดย offset = N-1
ตัวอย่างการใช้งาน
สร้างตารางเงินเดือน:
mysql> CREATE TABLE NthSalaryDemo ( Id INT NOT NULL AUTO_INCREMENT, Name VARCHAR(10), Salary INT, PRIMARY KEY(Id) ); Query OK, 0 rows affected (1.03 sec)
เพิ่มข้อมูล:
mysql> INSERT INTO NthSalaryDemo(Name,Salary) VALUES('Larry',5700); Query OK, 1 row affected (0.41 sec)
mysql> INSERT INTO NthSalaryDemo(Name,Salary) VALUES('Sam',6000); Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO NthSalaryDemo(Name,Salary) VALUES('Mike',5800); Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO NthSalaryDemo(Name,Salary) VALUES('Carol',4500); Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO NthSalaryDemo(Name,Salary) VALUES('Bob',4900); Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO NthSalaryDemo(Name,Salary) VALUES('David',5400); Query OK, 1 row affected (0.27 sec)
mysql> INSERT INTO NthSalaryDemo(Name,Salary) VALUES('Maxwell',5300); Query OK, 1 row affected (0.21 sec)
mysql> INSERT INTO NthSalaryDemo(Name,Salary) VALUES('James',4000); Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO NthSalaryDemo(Name,Salary) VALUES('Robert',4600); Query OK, 1 row affected (0.19 sec)
แสดงข้อมูล:
+----+---------+--------+ | Id | Name | Salary | +----+---------+--------+ | 1 | Larry | 5700 | | 2 | Sam | 6000 | | 3 | Mike | 5800 | | 4 | Carol | 4500 | | 5 | Bob | 4900 | | 6 | David | 5400 | | 7 | Maxwell | 5300 | | 8 | James | 4000 | | 9 | Robert | 4600 | +----+---------+--------+ 9 rows in set (0.00 sec)
กรณีที่ 1: อันดับที่ 4 (LIMIT 3,1)
mysql> SELECT * FROM NthSalaryDemo ORDER BY Salary DESC LIMIT 3,1;
+----+-------+--------+ | Id | Name | Salary | +----+-------+--------+ | 6 | David | 5400 | +----+-------+--------+
กรณีที่ 2: อันดับที่ 2 (LIMIT 1,1)
mysql> SELECT * FROM NthSalaryDemo ORDER BY Salary DESC LIMIT 1,1;
+----+------+--------+ | Id | Name | Salary | +----+------+--------+ | 3 | Mike | 5800 | +----+------+--------+
กรณีที่ 3: อันดับที่ 1 (LIMIT 1)
mysql> SELECT * FROM NthSalaryDemo ORDER BY Salary DESC LIMIT 1;
+----+------+--------+ | Id | Name | Salary | +----+------+--------+ | 2 | Sam | 6000 | +----+------+--------+
กรณีที่ 4: อันดับที่ 8 (LIMIT 7,1)
mysql> SELECT * FROM NthSalaryDemo ORDER BY Salary DESC LIMIT 7,1;
+----+-------+--------+ | Id | Name | Salary | +----+-------+--------+ | 4 | Carol | 4500 | +----+-------+--------+