หากต้องการเลือกแถวบนสุด 2 แถวจากแต่ละกลุ่ม ให้ใช้เงื่อนไข where พร้อมข้อความค้นหาย่อย ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้:
mysql> สร้างตาราง selectTop2FromEachGroup -> ( -> Name varchar(20), -> TotalScores int -> );Query OK, 0 แถวได้รับผลกระทบ (0.80 วินาที)
ตอนนี้แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้:
mysql> แทรกลงในค่า selectTop2FromEachGroup ('John',32);Query OK, 1 แถวที่ได้รับผลกระทบ (0.38 วินาที)mysql> แทรกลงในค่า selectTop2FromEachGroup ('John',33);Query OK, 1 แถวได้รับผลกระทบ (0.21 วินาที) )mysql> แทรกลงในค่า selectTop2FromEachGroup ('John', 34); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า selectTop2FromEachGroup ('Carol', 35); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกในค่า selectTop2FromEachGroup ('Carol',36); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงในค่า selectTop2FromEachGroup ('Carol',37); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้:
mysql> เลือก *จาก selectTop2FromEachGroup;
ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+-------+-------------+| ชื่อ | คะแนนรวม |+-------+-------------+| จอห์น | 32 || จอห์น | 33 || จอห์น | 34 || แครอล | 35 || แครอล | 36 || แครอล | 37 |+-------+-------------+6 แถวในชุด (0.00 วินาที)นี่คือแบบสอบถามเพื่อเลือกแถวบนสุด 2 แถวจากแต่ละกลุ่มโดยใช้เงื่อนไขและแบบสอบถามย่อย:
mysql> เลือก *จาก selectTop2FromEachGroup tbl -> where -> ( -> SELECT COUNT(*) -> FROM selectTop2FromEachGroup tbl1 -> WHERE tbl1.Name =tbl.Name AND -> tbl1.TotalScores>=tbl.TotalScores -> ) <=2;
ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+-------+-------------+| ชื่อ | คะแนนรวม |+-------+-------------+| จอห์น | 33 || จอห์น | 34 || แครอล | 36 || แครอล | 37 |+-------+-------------+4 แถวในชุด (0.06 วินาที)