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

ฉันสามารถใช้ MySQL COUNT() และ DISTINCT ร่วมกันได้หรือไม่


ได้ คุณสามารถใช้ COUNT() และ DISTINCT ร่วมกันเพื่อแสดงจำนวนเฉพาะแถวที่แตกต่างกัน

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

เลือก COUNT (DISTINCT yourColumnName) เป็น anyVariableName จาก yourTableName

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง

แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

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

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

mysql> แทรกลงในค่า CountDistinctDemo (ชื่อ) ('Carol'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.48 วินาที) mysql> แทรกลงในค่า CountDistinctDemo (ชื่อ) ('Bob'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.43 วินาที) mysql> แทรกลงในค่า CountDistinctDemo (ชื่อ) ('Carol'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.26 วินาที) mysql> แทรกลงในค่า CountDistinctDemo (ชื่อ) ('John'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.27 วินาที) mysql> แทรกลงในค่า CountDistinctDemo (ชื่อ) ('Bob'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.35 วินาที) mysql> แทรกลงในค่า CountDistinctDemo (ชื่อ) ('Carol'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.98 วินาที)mysql> แทรกลงในค่า CountDistinctDemo (ชื่อ) ('John'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.26 วินาที) mysql> แทรกลงในค่า CountDistinctDemo (ชื่อ) ('Sam'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.14 วินาที) mysql> แทรกลงในค่า CountDistinctDemo (ชื่อ) ('ไมค์'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.53 วินาที) mysql> แทรกลงในค่า CountDistinctDemo (ชื่อ) ('Carol'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.31 วินาที) mysql> แทรกลงในค่า CountDistinctDemo (ชื่อ) ('David'); แบบสอบถาม ตกลง ได้รับผลกระทบ 1 แถว (0.40 วินาที)

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

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

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

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

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

หากคุณไม่ได้ใช้ DISTINCT ฟังก์ชัน COUNT() จะให้จำนวนแถวทั้งหมด

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

mysql> เลือก count(Name) เป็น TotalName จาก CountDistinctDemo;

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

<ก่อนหน้า>+-----------+| รวมชื่อ |+-----------+| 11 |+-----------+1 แถวในชุด (0.04 วินาที)

นี่คือแบบสอบถามที่จะใช้ COUNT() และ DISTINCT ร่วมกัน -

mysql> เลือก COUNT (ชื่อ DISTINCT) เป็น UniqueName จาก CountDistinctDemo

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

<ก่อนหน้า>+-----------+| UniqueName |+-----------+| 6 |+------------+1 แถวในชุด (0.00 วินาที)