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

Truy vấn MySQL tìm bản ghi trùng lặp và hiển thị số lượng

Để tìm các bản ghi trùng lặp (duplicate tuples), hãy sử dụng mệnh đề GROUP BY ... HAVING. Hãy cùng tạo một bảng trước:

mysql> CREATE TABLE DemoTable (
    -> Id INT,
    -> Name VARCHAR(20)
    -> ); Query OK, 0 rows affected (0.80 sec)

Chèn một số bản ghi vào bảng bằng lệnh INSERT:

mysql> INSERT INTO DemoTable VALUES(100,'Chris'); Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES(101,'David'); Query OK, 1 row affected (0.23 sec)
mysql> INSERT INTO DemoTable VALUES(101,'Mike'); Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES(100,'Carol'); Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES(100,'Chris'); Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES(100,'Chris'); Query OK, 1 row affected (0.10 sec)

Hiển thị tất cả bản ghi từ bảng bằng lệnh SELECT:

mysql> SELECT * FROM DemoTable;

Kết quả sẽ như sau:

+------+-------+
| Id   | Name  |
+------+-------+
|  100 | Chris |
|  101 | David |
|  101 | Mike  |
|  100 | Carol |
|  100 | Chris |
|  100 | Chris |
+------+-------+
6 rows in set (0.00 sec)

Dưới đây là truy vấn để tìm các bản ghi trùng lặp:

mysql> SELECT Id, Name, COUNT(*) AS t FROM DemoTable
    -> GROUP BY Id, Name
    -> HAVING COUNT(*) > 2;

Kết quả sẽ như sau:

+------+-------+---+
| Id   | Name  | t |
+------+-------+---+
|  100 | Chris | 3 |
+------+-------+---+
1 row in set (0.03 sec)