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

ใช้ COUNT() และ DISTINCT ร่วมกันใน MySQL ได้ไหม

ได้ครับ - ใช้ COUNT(DISTINCT column) เพื่อนับเฉพาะค่าที่ไม่ซ้ำกัน

ไวยากรณ์

SELECT COUNT(DISTINCT yourColumnName) AS uniqueCount FROM yourTableName;

ตัวอย่างการใช้งาน

สร้างตาราง CountDistinctDemo:

mysql> CREATE TABLE CountDistinctDemo (
    -> Id INT NOT NULL AUTO_INCREMENT,
    -> Name VARCHAR(20),
    -> PRIMARY KEY(Id)
    -> );

เพิ่มข้อมูล (มีชื่อซ้ำหลายครั้ง):

mysql> INSERT INTO CountDistinctDemo(Name) VALUES('Carol'),('Bob'),('Carol'),('John'),('Bob'),('Carol'),('John'),('Sam'),('Mike'),('Carol'),('David');

ข้อมูลทั้งหมด (11 แถว)

+----+-------+
| Id | Name  |
+----+-------+
| 1  | Carol |
| 2  | Bob   |
| 3  | Carol |
| 4  | John  |
| 5  | Bob   |
| 6  | Carol |
| 7  | John  |
| 8  | Sam   |
| 9  | Mike  |
| 10 | Carol |
| 11 | David |
+----+-------+

❌ COUNT() ธรรมดา (นับทุกแถว)

mysql> SELECT COUNT(Name) AS TotalName FROM CountDistinctDemo;
+-----------+
| TotalName |
+-----------+
| 11        |
+-----------+

✅ COUNT(DISTINCT) (นับค่าที่ไม่ซ้ำ)

mysql> SELECT COUNT(DISTINCT Name) AS UniqueName FROM CountDistinctDemo;
+------------+
| UniqueName |
+------------+
| 6          |
+------------+

สรุป: มีชื่อไม่ซ้ำ 6 ชื่อ (Carol, Bob, John, Sam, Mike, David) จากทั้งหมด 11 แถว