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

Cách đếm bản ghi duy nhất từ cột trong MySQL

Để đếm số lượng giá trị duy nhất (distinct) cho mỗi nhóm trong MySQL, bạn kết hợp COUNT(DISTINCT column) với GROUP BY.

Ví dụ minh họa

Tạo bảng tin nhắn:

mysql> create table DemoTable ( 
    UserName varchar(100), 
    UserPostMessage text 
);

Chèn dữ liệu:

mysql> insert into DemoTable values('Chris','Hi');
mysql> insert into DemoTable values('David','Hello');
mysql> insert into DemoTable values('Chris','Awesome');
mysql> insert into DemoTable values('Chris','Amazing');
mysql> insert into DemoTable values('David','Nice Place');
mysql> insert into DemoTable values('Chris','Amazing');

Hiển thị dữ liệu (có trùng lặp tin nhắn "Amazing" của Chris):

mysql> select * from DemoTable;

Kết quả:

+----------+-----------------+
| UserName | UserPostMessage |
+----------+-----------------+
| Chris    | Hi              |
| David    | Hello           |
| Chris    | Awesome         |
| Chris    | Amazing         |
| David    | Nice Place      |
| Chris    | Amazing         |
+----------+-----------------+

Truy vấn đếm tin nhắn duy nhất theo user

mysql> select UserName, count(DISTINCT UserPostMessage) AS NumberOfMessagesPostByUser 
from DemoTable group by UserName;

Kết quả:

+----------+----------------------------+
| UserName | NumberOfMessagesPostByUser |
+----------+----------------------------+
| Chris    | 3                          |
| David    | 2                          |
+----------+----------------------------+

Giải thích:

  • GROUP BY UserName: Nhóm dữ liệu theo từng user
  • COUNT(DISTINCT UserPostMessage): Đếm số tin nhắn KHÔNG TRÙNG LẶP trong mỗi nhóm
  • Chris có 4 tin nhắn nhưng "Amazing" lặp 2 lần → chỉ đếm 3 tin nhắn duy nhất

Kỹ thuật này thường dùng để thống kê hoạt động người dùng, số lượng sản phẩm duy nhất mỗi đơn hàng, v.v.