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

Tìm và hiển thị giá trị trùng lặp chỉ một lần từ cột trong MySQL

Tạo bảng demo

mysql> create table DemoTable (
    -> value int
    -> );
Query OK, 0 rows affected (0.82 sec)

Chèn dữ liệu có giá trị trùng lặp

mysql> insert into DemoTable values(10);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(100);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(20);
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable values(10);
Query OK, 1 row affected (0.34 sec)
mysql> insert into DemoTable values(30);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable values(40);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(20);
Query OK, 1 row affected (0.07 sec)

Hiển thị tất cả bản ghi

mysql> select * from DemoTable;

Kết quả

+-------+
| value |
+-------+
| 10    |
| 100   |
| 20    |
| 10    |
| 30    |
| 40    |
| 20    |
+-------+
7 rows in set (0.00 sec)

Truy vấn tìm giá trị trùng lặp và hiển thị một lần

mysql> select * from DemoTable group by value having count(*) > 1;

Kết quả - Chỉ hiển thị 10 và 20 (xuất hiện > 1 lần)

+-------+
| value |
+-------+
| 10    |
| 20    |
+-------+
2 rows in set (0.00 sec)

Giải thích:

  • GROUP BY value: Nhóm các hàng có cùng giá trị.
  • HAVING COUNT(*) > 1: Lọc chỉ những nhóm có số lượng lớn hơn 1 (tức là trùng lặp).

Mở rộng: Để xem số lần xuất hiện:

select value, count(*) as SoLanXuatHien from DemoTable group by value having count(*) > 1;