Bạn cần sử dụng GROUP BY với COUNT (*) để nhóm các giá trị và hiển thị số lượng loại bỏ nhiều giá trị. Đầu tiên chúng ta hãy tạo một bảng:
mysql> create table DemoTable (Value int); Query OK, 0 rows affected (0.55 sec)
Sau đây là truy vấn để chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert:
mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(20); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(30); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable values(20); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(40); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable values(20); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(20); Query OK, 1 row affected (0.07 sec) mysql> insert into DemoTable values(60); Query OK, 1 row affected (0.25 sec)
Sau đây là truy vấn để hiển thị các bản ghi từ bảng bằng lệnh select:
mysql> select *from DemoTable;
Điều này sẽ tạo ra kết quả sau:
+-------+ | Value | +-------+ | 10 | | 20 | | 10 | | 30 | | 10 | | 20 | | 40 | | 10 | | 20 | | 20 | | 60 | +-------+ 11 rows in set (0.00 sec)
Sau đây là truy vấn để trả về số lượng các bản ghi tương tự, tức là 10, 20, 30, 40, 60 trong trường hợp của chúng tôi:
mysql> SELECT COUNT(*) FROM (SELECT *FROM DemoTable GROUP BY Value) AS tbl;
Điều này sẽ tạo ra kết quả sau:
+----------+ | COUNT(*) | +----------+ | 5 | +----------+ 1 row in set (0.00 sec)