เมื่อต้องการหาค่าที่ปรากฏซ้ำในคอลัมน์เฉพาะ และแสดงเฉพาะค่าที่ซ้ำมากกว่าหรือเท่ากับ N ครั้ง ให้ใช้ GROUP BY ร่วมกับ HAVING COUNT(*) >= N
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มข้อมูลชื่อนักเรียน (มีค่าซ้ำหลายค่า):
mysql> create table DemoTable1351 (StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(40));
mysql> insert into DemoTable1351(StudentName) values('Chris'),('Bob'),('Bob'),('David'),('Bob'),('David'),('Bob'),('Mike'),('David');
ข้อมูลทั้งหมด (Bob 4 ครั้ง, David 3 ครั้ง, Chris 1, Mike 1):
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 1 | Chris | | 2 | Bob | | 3 | Bob | | 4 | David | | 5 | Bob | | 6 | David | | 7 | Bob | | 8 | Mike | | 9 | David | +-----------+-------------+
คำสั่งแสดงชื่อที่ซ้ำ >= 3 ครั้ง
mysql> select * from DemoTable1351
-> group by StudentName
-> having count(StudentName) >= 3;
ผลลัพธ์ (เฉพาะ Bob และ David)
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 2 | Bob | | 4 | David | +-----------+-------------+
คำอธิบาย:
GROUP BY StudentNameจัดกลุ่มตามชื่อCOUNT(StudentName)นับจำนวนแถวในแต่ละกลุ่มHAVING COUNT(...) >= 3กรองกลุ่มที่มีจำนวน 3 ขึ้นไปSELECT *จะแสดงคอลัมน์ที่ GROUP BY (StudentName) และคอลัมน์อื่นอาจแสดงค่าแถวแรกของกลุ่ม (MySQL อนุญาต แต่ไม่ใช่มาตรฐาน SQL) ควรระบุSELECT StudentName, COUNT(*)แทน