คุณต้องใช้คำสั่ง GROUP BY พร้อมฟังก์ชันรวม count(*) จาก MySQL เพื่อให้บรรลุเป้าหมายนี้ ไวยากรณ์มีดังนี้:
เลือก yourColumnName,COUNT(*) AS anyVariableNameFROM yourTableName GROUP BY yourColumnName;
เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้:
mysql> สร้างตาราง selectDistinct_CountDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> Name varchar(10), -> AppearanceId int, -> PRIMARY KEY(Id) -> );Query OK, 0 แถวได้รับผลกระทบ ( 0.63 วินาที)
แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้:
mysql> แทรกลงในค่า selectDistinct_CountDemo(Name,AppearanceId) ('Larry',1);Query OK, 1 แถวได้รับผลกระทบ (0.18 วินาที)mysql> แทรกลงในค่า selectDistinct_CountDemo(Name,AppearanceId) ('John',2);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.24 วินาที)mysql> แทรกลงในค่า selectDistinct_CountDemo(Name,AppearanceId) ('Larry',3);Query OK, 1 แถวได้รับผลกระทบ (0.12 วินาที)mysql> แทรกลงใน selectDistinct_CountDemo(Name, AppearanceId) ค่า ('Larry',10); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงใน selectDistinct_CountDemo(Name,AppearanceId) ค่า ('Carol',11); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงในค่า selectDistinct_CountDemo(Name,AppearanceId) ('Larry',15);Query OK, 1 แถวได้รับผลกระทบ (0.18 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้:
mysql> เลือก *จาก selectDistinct_CountDemo;
ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+----+-------+--------------+| รหัส | ชื่อ | AppearanceId |+----+-------+------------+| 1 | แลร์รี่ | 1 || 2 | จอห์น | 2 || 3 | แลร์รี่ | 3 || 4 | แลร์รี่ | 10 || 5 | แครอล | 11 || 6 | แลร์รี่ | 15 |+----+-------+--------------+6 แถวในชุด (0.00 วินาที)นี่คือข้อความค้นหาเพื่อเลือกความแตกต่างและนับ:
mysql> เลือก Name,count(*) เป็น TotalAppearance จาก selectDistinct_CountDemo -> จัดกลุ่มตามชื่อ;
ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+------+-----------------+| ชื่อ | TotalAppearance |+-------+----------------+| แลร์รี่ | 4 || จอห์น | 1 || แครอล | 1 |+-------+-----------------+3 แถวในชุด (0.00 วินาที)