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

ใน MySQL เลือก 2 แถวแรกของแต่ละกลุ่มอย่างไร?


เพื่อเลือก 2 แถวแรกจากแต่ละกลุ่ม ใช้เงื่อนไข WHERE ร่วมกับ Subquery

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

สร้างตาราง:

mysql> create table selectTop2FromEachGroup ( Name varchar(20), TotalScores int ); Query OK, 0 rows affected (0.80 sec)

เพิ่มข้อมูล:

mysql> insert into selectTop2FromEachGroup values('John',32); Query OK, 1 row affected (0.38 sec)
mysql> insert into selectTop2FromEachGroup values('John',33); Query OK, 1 row affected (0.21 sec)
mysql> insert into selectTop2FromEachGroup values('John',34); Query OK, 1 row affected (0.17 sec)
mysql> insert into selectTop2FromEachGroup values('Carol',35); Query OK, 1 row affected (0.17 sec)
mysql> insert into selectTop2FromEachGroup values('Carol',36); Query OK, 1 row affected (0.14 sec)
mysql> insert into selectTop2FromEachGroup values('Carol',37); Query OK, 1 row affected (0.15 sec)

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

mysql> select *from selectTop2FromEachGroup;

ผลลัพธ์:

+-------+-------------+ | Name  | TotalScores | +-------+-------------+ | John  | 32          | | John  | 33          | | John  | 34          | | Carol | 35          | | Carol | 36          | | Carol | 37          | +-------+-------------+ 6 rows in set (0.00 sec)

คำสั่งเลือก 2 แถวแรกของแต่ละกลุ่ม (คะแนนสูงสุด 2 อันดับ):

mysql> select *from selectTop2FromEachGroup tbl WHERE ( SELECT COUNT(*) FROM selectTop2FromEachGroup tbl1 WHERE tbl1.Name = tbl.Name AND tbl1.TotalScores >= tbl.TotalScores ) <= 2 ;

ผลลัพธ์:

+-------+-------------+ | Name  | TotalScores | +-------+-------------+ | John  | 33          | | John  | 34          | | Carol | 36          | | Carol | 37          | +-------+-------------+ 4 rows in set (0.06 sec)

ได้คะแนนสูงสุด 2 อันดับของแต่ละคน: John ได้ 33, 34 และ Carol ได้ 36, 37