Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

หาค่าอันดับ 2 สูงสุดจากคะแนนนักเรียนใน MySQL

ใช้ ORDER BY ... DESC LIMIT 1,1 ข้ามอันดับ 1 (offset 1) แล้วเอา 1 แถว

สร้างตารางและเพิ่มคะแนน

mysql> create table DemoTable ( StudentScore int ); 
Query OK, 0 rows affected (0.56 sec)

mysql> insert into DemoTable values(89); Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(69); Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(97); Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(99); Query OK, 1 row affected (0.12 sec)

คิวรีหาอันดับ 2

mysql> select * from DemoTable order by StudentScore DESC limit 1,1;
+--------------+
| StudentScore |
+--------------+
| 97           |
+--------------+
1 row in set (0.00 sec)

อธิบาย LIMIT: LIMIT offset, count → offset=1 (ข้าม 1 แถวแรก), count=1 (เอา 1 แถว)

ข้อควรระวัง: หากค่าสูงสุดซ้ำหลายแถว วิธีนี้อาจให้ผลไม่ตรงตามต้องการ ควรใช้ DISTINCT หรือ Window Function (MySQL 8.0+)