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

Cách tìm cặp giá trị trùng lặp trong MySQL

Cách tìm cặp giá trị trùng lặp trong MySQL

Để tìm cặp giá trị trùng lặp trong MySQL, hãy sử dụng mệnh đề GROUP BY HAVING.

Hãy tạo một bảng trước:

mysql> create table DemoTable748 (Id int, FirstName varchar(100));
Query OK, 0 rows affected (0.46 sec)

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

mysql> insert into DemoTable748 values(100,'John');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable748 values(100,'Sam');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable748 values(200,'Carol');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable748 values(200,'Carol');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable748 values(300,'Mike');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable748 values(300,'Sam');
Query OK, 1 row affected (0.15 sec)

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select:

mysql> select * from DemoTable748;

Điều này sẽ tạo ra đầu ra sau:

+------+-----------+
| Id   | FirstName |
+------+-----------+
| 100  | John      |
| 100  | Sam       |
| 200  | Carol     |
| 200  | Carol     |
| 300  | Mike      |
| 300  | Sam       |
+------+-----------+
6 rows in set (0.00 sec)

Truy vấn sau tìm cặp giá trị trùng lặp trong MySQL:

mysql> select Id from DemoTable748
    group by Id, FirstName having count(*)=2;

Điều này sẽ tạo ra đầu ra sau. Vì cặp giá trị trùng lặp duy nhất cho Id và FirstName là 200-Carol, nên đầu ra hiển thị 200:

+------+
| Id   |
+------+
| 200  |
+------+
1 row in set (0.00 sec)

Lưu ý: Truy vấn này nhóm theo cả Id và FirstName, chỉ trả về các cặp xuất hiện đúng 2 lần. Để tìm tất cả cặp trùng lặp (>=2), dùng HAVING COUNT(*) > 1.