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

GROUP BY จำนวนแถวที่ส่งคืนโดย GROUP BY ใน MySQL?


คุณสามารถใช้ GROUP_CONCAT() สำหรับสิ่งนี้ เพื่อให้เข้าใจแนวคิดข้างต้น ให้เราสร้างตาราง

แบบสอบถามในการสร้างตารางมีดังนี้

mysql> สร้างตาราง groupByDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT คีย์หลัก -> ชื่อ varchar(100) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (1.31 วินาที)

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

แบบสอบถามมีดังนี้

mysql> แทรกลงใน groupByDemo(Name) values('John');Query OK, 1 แถวได้รับผลกระทบ (0.19 วินาที)mysql> แทรกลงใน groupByDemo(Name) values('Carol');Query OK, 1 แถวได้รับผลกระทบ ( 0.14 วินาที) mysql> แทรกลงในค่า groupByDemo (ชื่อ) ('Carol'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.10 วินาที) mysql> แทรกลงในค่า groupByDemo (ชื่อ) ('Bob'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.24 วินาที)mysql> แทรกลงในค่า groupByDemo (ชื่อ) ('Bob'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.23 วินาที) mysql> แทรกลงในค่า groupByDemo (ชื่อ) ('Bob'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.17 วินาที) mysql> แทรกลงในค่า groupByDemo (ชื่อ) ('John'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า groupByDemo (ชื่อ) ('John'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.07 วินาที) mysql> แทรกลงในค่า groupByDemo (ชื่อ) ('John'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> แทรกลงในค่า groupByDemo (ชื่อ) ('Sam'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.17 วินาที) mysql> แทรกลงในค่า groupByDemo (ชื่อ) ('Carol'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที)

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

แบบสอบถามมีดังนี้

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

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+----+-------+| รหัส | ชื่อ |+---+-------+| 1 | จอห์น || 2 | แครอล || 3 | แครอล || 4 | บ๊อบ || 5 | บ๊อบ || 6 | บ๊อบ || 7 | จอห์น || 8 | จอห์น || 9 | จอห์น || 10 | แซม || 11 | Carol |+----+-------+11 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อจัดกลุ่มตามจำนวนแถว

mysql> SELECT Counter, GROUP_CONCAT(Name SEPARATOR ', ') as AllName -> FROM (SELECT Name, COUNT(Name) as Counter -> FROM groupByDemo -> GROUP BY Name) tbl -> GROUP BY Counter -> ORDER BY Counter DESC;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+---------+-----------+| เคาน์เตอร์ | AllName |+---------+-----------+| 4 | จอห์น | | 3 | แครอล, บ๊อบ || 1 | แซม |+---------+-----------+3 แถวในชุด (0.00 วินาที)