ในการรับค่าที่แตกต่างและนับได้ คุณสามารถใช้ประโยค GROUP BY ได้
ไวยากรณ์มีดังนี้
เลือก yourColumnName,count(*) เป็น anyAliasName จากกลุ่ม yourTableName โดย yourColumnName;
เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามในการสร้างตารางมีดังนี้
mysql> สร้างตาราง GroupByAndCountDemo -> ( -> ClientId int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> ClientName varchar(100) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.64 วินาที)
แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −
mysql> แทรกลงในค่า GroupByAndCountDemo(ClientName) ('John');Query OK, 1 แถวได้รับผลกระทบ (0.18 วินาที)mysql> แทรกลงในค่า GroupByAndCountDemo(ClientName) ('Carol'); Query OK, 1 แถวได้รับผลกระทบ ( 0.14 วินาที) mysql> แทรกลงในค่า GroupByAndCountDemo (ชื่อลูกค้า) ('แซม'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า GroupByAndCountDemo (ชื่อลูกค้า) ('แซม'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว ( 0.16 วินาที) mysql> แทรกลงในค่า GroupByAndCountDemo (ชื่อลูกค้า) ('John'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.51 วินาที) mysql> แทรกลงในค่า GroupByAndCountDemo (ClientName) ('John'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.15 วินาที) mysql> แทรกลงในค่า GroupByAndCountDemo (ชื่อลูกค้า) ('John'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงในค่า GroupByAndCountDemo (ชื่อลูกค้า) ('Sam'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว ( 0.08 วินาที) mysql> แทรกลงในค่า GroupByAndCountDemo (ชื่อลูกค้า) ('แซม'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.47 วินาที) mysql> แทรกลงในค่า GroupByAndCountDemo (ชื่อลูกค้า) ('แซม'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.09 วินาที)mysql> แทรกลงในค่า GroupByAndCountDemo (ชื่อลูกค้า) ('John'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงในค่า GroupByAndCountDemo (ชื่อลูกค้า) ('John'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที)mysql> แทรกลงในค่า GroupByAndCountDemo (ชื่อลูกค้า) ('John'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.10 วินาที) mysql> แทรกลงในค่า GroupByAndCountDemo (ชื่อลูกค้า) ('David'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที)mysql> แทรกลงในค่า GroupByAndCountDemo (ชื่อลูกค้า) ('Maxwell'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า GroupByAndCountDemo (ชื่อลูกค้า) ('Maxwell'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.15 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −
mysql> เลือก *จาก GroupByAndCountDemo;
ผลลัพธ์ที่ได้จะเป็นดังนี้
<ก่อนหน้า>+----------+-----------+| รหัสลูกค้า | ชื่อลูกค้า |+----------+-----------+| 1 | จอห์น || 2 | แครอล || 3 | แซม || 4 | แซม || 5 | จอห์น || 6 | จอห์น || 7 | จอห์น | | 8 | แซม || 9 | แซม || 10 | แซม || 11 | จอห์น || 12 | จอห์น || 13 | จอห์น || 14 | เดวิด || 15 | แม็กซ์เวลล์ || 16 | Maxwell |+----------+-----------+16 แถวในชุด (0.00 วินาที)ตอนนี้ให้เราหาค่าที่แตกต่างกันและนับโดยใช้แบบสอบถามต่อไปนี้
mysql> เลือก ClientName,count(*) เป็น TotalCount จาก GroupByAndCountDemo ตามชื่อไคลเอนต์
ต่อไปนี้เป็นผลลัพธ์
<ก่อนหน้า>+-----------+-----------+| ชื่อลูกค้า | TotalCount |+--------------------+-----------+| จอห์น | 7 || แครอล | 1 || แซม | 5 || เดวิด | 1 || แม็กซ์เวลล์ | 2 |+------------+------------+5 แถวในชุด (0.00 วินาที)