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

MySQL "สั่งซื้อโดย" ภายใน "จัดกลุ่มตาม"? เป็นไปได้ไหม?


แทนที่จะใช้ ORDER BY ภายใน GROUP BY คุณสามารถใช้ฟังก์ชันการรวม MAX()

ไวยากรณ์มีดังนี้ −

เลือก yourNameColumnName,MAX(yourRankColumnName) จาก yourTableNameGROUP BY yourNameColumnName;

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

mysql> สร้างตาราง MaxDemo -> ( -> UserId int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> UserName varchar(20), -> UserRank int -> );Query OK, 0 แถวได้รับผลกระทบ (0.77 วินาที)

แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −

mysql> แทรกลงใน MaxDemo(UserName,UserRank) values('Larry',2);Query OK, 1 แถวได้รับผลกระทบ (0.21 วินาที)mysql> แทรกลงใน MaxDemo(ชื่อผู้ใช้,UserRank) ค่า('Sam',1);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที)mysql> แทรกลงใน MaxDemo(ชื่อผู้ใช้ อันดับผู้ใช้) ค่า ('Sam',2);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที)

ตอนนี้คุณสามารถแสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก MaxDemo;

ผลลัพธ์

<ก่อนหน้า>+---------+----------+----------+| รหัสผู้ใช้ | ชื่อผู้ใช้ | อันดับผู้ใช้ |+---------+----------+----------+| 1 | แลร์รี่ | 2 || 2 | แซม | 1 || 3 | แซม | 2 |+-------+----------+----------+3 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อใช้ฟังก์ชัน MAX() เพื่อให้ได้ผลลัพธ์ -

mysql> เลือกชื่อผู้ใช้ MAX(UserRank) จากกลุ่ม MaxDemo ตามชื่อผู้ใช้

ผลลัพธ์

<ก่อนหน้า>+----------+--------------+| ชื่อผู้ใช้ | MAX(UserRank) |+----------+--------------+| แลร์รี่ | 2 || แซม | 2 |+----------+---------------------+2 แถวในชุด (0.00 วินาที)