การนับจำนวนค่าที่ไม่ซ้ำกัน (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)