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

นับเฉพาะค่าที่ไม่ซ้ำใน MySQL (COUNT DISTINCT)

การนับจำนวนค่าที่ไม่ซ้ำกัน (Unique Count) ใน MySQL

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

SELECT COUNT(DISTINCT yourColumnName) FROM yourTableName;

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

สร้างตารางและเพิ่มข้อมูลมีค่าซ้ำ:

mysql> create table DemoTable (Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName varchar(10));
mysql> insert into DemoTable(FirstName) values('Larry');
mysql> insert into DemoTable(FirstName) values('John');
mysql> insert into DemoTable(FirstName) values('Sam');
mysql> insert into DemoTable(FirstName) values('John');
mysql> insert into DemoTable(FirstName) values('John');
mysql> insert into DemoTable(FirstName) values('Larry');
mysql> insert into DemoTable(FirstName) values('Mike');
mysql> insert into DemoTable(FirstName) values('Robert');
mysql> insert into DemoTable(FirstName) values('Carol');
mysql> insert into DemoTable(FirstName) values('Mike');

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

+----+-----------+
| Id | FirstName |
+----+-----------+
| 1  | Larry     |
| 2  | John      |
| 3  | Sam       |
| 4  | John      |
| 5  | John      |
| 6  | Larry     |
| 7  | Mike      |
| 8  | Robert    |
| 9  | Carol     |
| 10 | Mike      |
+----+-----------+

คิวรีนับค่าที่ไม่ซ้ำ:

mysql> select count(distinct FirstName) from DemoTable;
+---------------------------+
| count(distinct FirstName) |
+---------------------------+
| 6                         |
+---------------------------+

ค่าที่ไม่ซ้ำ 6 ค่า: Larry, John, Sam, Mike, Robert, Carol

เปรียบเทียบ:

  • COUNT(FirstName) = 10 (นับทุกแถว ยกเว้น NULL)
  • COUNT(*) = 10 (นับทุกแถว รวม NULL)
  • COUNT(DISTINCT FirstName) = 6 (นับค่า Unique)

หลายคอลัมน์: COUNT(DISTINCT col1, col2) นับคู่ที่ไม่ซ้ำ (Row-level distinct)