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

เลือกค่าที่สองมากที่สุดใน MySQL โดยไม่ใช้ LIMIT

วิธีหาค่าที่สองมากที่สุด (Second Largest) ใน MySQL โดยไม่ใช้ LIMIT

ใช้ Subquery หาค่าสูงสุด แล้วหาค่าสูงสุดที่น้อยกว่าค่านั้น

SELECT MAX(yourColumn) FROM yourTable WHERE yourColumn < (SELECT MAX(yourColumn) FROM yourTable);

ตัวอย่างการใช้งาน

สร้างตารางและเพิ่มตัวเลข:

mysql> create table DemoTable (Number int);
mysql> insert into DemoTable values(78);
mysql> insert into DemoTable values(67);
mysql> insert into DemoTable values(92);
mysql> insert into DemoTable values(98);
mysql> insert into DemoTable values(88);
mysql> insert into DemoTable values(86);
mysql> insert into DemoTable values(89);

ข้อมูลทั้งหมด:

+--------+
| Number |
+--------+
| 78     |
| 67     |
| 92     |
| 98     |
| 88     |
| 86     |
| 89     |
+--------+

คิวรีหาค่าที่ 2 มากที่สุด:

mysql> SELECT MAX(Number) FROM DemoTable WHERE Number < (SELECT MAX(Number) FROM DemoTable);
+-------------+
| MAX(Number) |
+-------------+
| 92          |
+-------------+

วิธีอื่นๆ:

  • ใช้ LIMIT (ง่ายกว่า): SELECT Number FROM DemoTable ORDER BY Number DESC LIMIT 1,1
  • ใช้ DISTINCT + LIMIT: SELECT DISTINCT Number FROM DemoTable ORDER BY Number DESC LIMIT 1,1 (กรณีมีค่าซ้ำ)
  • ใช้ Variable: ใช้ User-defined Variable นับลำดับ

ข้อควรระวัง: หากค่าสูงสุดมีหลายแถว (Duplicate) วิธี Subquery นี้จะคืนค่าที่ 2 มากที่สุดที่แตกต่าง (Distinct) ซึ่งมักเป็นสิ่งที่ต้องการ | หากต้องการรวม Duplicate ให้ใช้วิธี LIMIT