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 ....