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

Hiển thị tên cột trùng lặp xuất hiện ít nhất 3 lần trong MySQL

Sử dụng GROUP BY kết hợp HAVING COUNT(*) >= 3 để lọc các giá trị xuất hiện ≥ 3 lần.

Ví dụ minh họa

Tạo bảng:

mysql> CREATE TABLE DemoTable1351 (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(40)
);

Chèn dữ liệu (Bob 4 lần, David 3 lần, Chris 1, Mike 1):

mysql> INSERT INTO DemoTable1351(StudentName) VALUES('Chris'), ('Bob'), ('Bob'), ('David'), ('Bob'), ('David'), ('Bob'), ('Mike'), ('David');

Xem dữ liệu:

mysql> SELECT * FROM DemoTable1351;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | Chris       |
| 2         | Bob         |
| 3         | Bob         |
| 4         | David       |
| 5         | Bob         |
| 6         | David       |
| 7         | Bob         |
| 8         | Mike        |
| 9         | David       |
+-----------+-------------+

Lọc tên xuất hiện ≥ 3 lần:

mysql> SELECT * FROM DemoTable1351
    GROUP BY StudentName
    HAVING COUNT(StudentName) >= 3;

Kết quả (chỉ Bob và David):

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 2         | Bob         |
| 4         | David       |
+-----------+-------------+

Lưu ý: SELECT * với GROUP BY chỉ an toàn khi cột không gom nhóm là hàm tập hợp hoặc phụ thuộc hàm (MySQL cho phép nhưng không chuẩn SQL). Nên viết rõ: SELECT StudentName, COUNT(*) AS cnt ....