การนับค่าที่ไม่ซ้ำกันด้วย COUNT(DISTINCT column)
เมื่อต้องการนับจำนวนค่าที่ไม่ซ้ำกัน (unique values) ในคอลัมน์ที่มีข้อมูลซ้ำ เราสามารถใช้ฟังก์ชัน COUNT(DISTINCT column_name) ได้โดยตรง
สร้างตารางและเพิ่มข้อมูลทดสอบ
mysql> CREATE TABLE DemoTable (
StudentId INT,
StudentFirstName VARCHAR(100)
);
Query OK, 0 rows affected (0.88 sec)
mysql> INSERT INTO DemoTable VALUES(100,'John');
mysql> INSERT INTO DemoTable VALUES(101,'Chris');
mysql> INSERT INTO DemoTable VALUES(102,'John');
mysql> INSERT INTO DemoTable VALUES(103,'Sam');
mysql> INSERT INTO DemoTable VALUES(104,'Sam');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+-----------+------------------+
| StudentId | StudentFirstName |
+-----------+------------------+
| 100 | John |
| 101 | Chris |
| 102 | John |
| 103 | Sam |
| 104 | Sam |
+-----------+------------------+
5 rows in set (0.00 sec)
คำสั่งนับชื่อที่ไม่ซ้ำกัน
mysql> SELECT COUNT(DISTINCT StudentFirstName) FROM DemoTable;
ผลลัพธ์:
+----------------------------------+
| count(distinct StudentFirstName) |
+----------------------------------+
| 3 |
+----------------------------------+
1 row in set (0.00 sec)
คำอธิบาย
DISTINCTภายในCOUNT()จะนับเฉพาะค่าที่ไม่ซ้ำกัน- ในตัวอย่าง มีชื่อ John, Chris, Sam รวม 3 ชื่อที่ไม่ซ้ำกัน
- วิธีนี้มีประสิทธิภาพกว่าการใช้
SELECT DISTINCT ...แล้วนับในโปรแกรมภายนอก