Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Đếm giá trị khác nhau (DISTINCT) trong MySQL


Sử dụng COUNT(DISTINCT column_name) để đếm số giá trị duy nhất trong một cột.

Cú pháp

SELECT COUNT(DISTINCT column_name) AS distinct_count
FROM table_name;

Ví dụ minh họa

mysql> CREATE TABLE DistinctDemo (Name VARCHAR(200));
Query OK, 0 rows affected (0.58 sec)

mysql> INSERT INTO DistinctDemo VALUES
('John'), ('Sam'), ('John'), ('Johnson'), ('John'), ('Johnson'), ('Sam'), ('Johnson');
Query OK, 8 rows affected

Dữ liệu (có trùng):

+---------+
| Name    |
+---------+
| John    |
| Sam     |
| John    |
| Johnson |
| John    |
| Johnson |
| Sam     |
| Johnson |
+---------+

Đếm distinct:

mysql> SELECT COUNT(DISTINCT Name) AS DistinctValues FROM DistinctDemo;

Kết quả:

+----------------+
| DistinctValues |
+----------------+
| 3              |
+----------------+

3 giá trị duy nhất: John, Sam, Johnson.

Các biến thể hữu ích

Đếm distinct trên nhiều cột (tổ hợp):

SELECT COUNT(DISTINCT col1, col2) FROM table_name;

Liệt kê các giá trị distinct:

SELECT DISTINCT Name FROM DistinctDemo;

Đếm distinct có điều kiện:

SELECT COUNT(DISTINCT Name) FROM DistinctDemo WHERE Name LIKE 'J%';

Hiệu năng

  • COUNT(DISTINCT ...) cần quét toàn bộ dữ liệu (full scan) trừ khi có index phù hợp.
  • Với bảng lớn, cân nhắc APPROX_COUNT_DISTINCT() (MySQL 8.0.3+) để ước lượng nhanh.
  • Index trên cột được COUNT DISTINCT giúp tăng tốc đáng kể.