Computer >> Máy Tính >  >> Lập trình >> MySQL

Chọn các hàng MySQL trong đó cột chứa cùng một dữ liệu trong nhiều bản ghi?

Sử dụng MySQL JOIN để chọn các hàng MySQL trong đó cột chứa cùng một dữ liệu trong nhiều bản ghi. Đầu tiên chúng ta hãy tạo một bảng -

mysql> create table DemoTable
(
   UserId int,
   UserName varchar(20)
);
Query OK, 0 rows affected (0.54 sec)

Chèn bản ghi vào bảng bằng lệnh chèn -

mysql> insert into DemoTable values(10,'John');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(11,'Sam');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values(12,'Larry');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(13,'David');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(14,'Larry');
Query OK, 1 row affected (0.10 sec)

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 -

+--------+----------+
| UserId | UserName |
+--------+----------+
| 10     | John     |
| 11     | Sam      |
| 12     | Larry    |
| 13     | David    |
| 14     | Larry    |
+--------+----------+
5 rows in set (0.00 sec)

Sau đây là truy vấn để chọn các hàng trong đó một cột chứa cùng một dữ liệu trong nhiều bản ghi -

mysql> SELECT DISTINCT tbl1.*
FROM DemoTable tbl1
JOIN DemoTable tbl2
on tbl2.UserId <> tbl1.UserId
AND tbl2.UserName=tbl1.UserName;

Điều này sẽ tạo ra kết quả sau -

+--------+----------+
| UserId | UserName |
+--------+----------+
| 14     | Larry    |
| 12     | Larry    |
+--------+----------+
2 rows in set (0.14 sec)