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

นับจำนวนค่าที่ไม่ซ้ำกัน (DISTINCT) ในคอลัมน์ที่มีข้อมูลซ้ำ MySQL

การนับค่าที่ไม่ซ้ำกันด้วย 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 ... แล้วนับในโปรแกรมภายนอก