ใช้ Subquery ร่วมกับ GROUP BY และ HAVING เพื่อนับค่าที่ซ้ำเกินกว่าหรือเท่ากับ 3 ครั้ง
ตัวอย่างข้อมูล
สร้างตารางและแทรกข้อมูล UserId ที่มีค่าซ้ำกัน:
mysql> create table DemoTable (UserId int); -- แทรกค่า: 10, 20, 30, 10, 10, 20, 30, 10, 20, 20, 40
ข้อมูลในตาราง:
+----------+ | UserId | +----------+ | 10 | | 20 | | 30 | | 10 | | 10 | | 20 | | 30 | | 10 | | 20 | | 20 | | 40 | +----------+
คำสั่ง SQL
SELECT COUNT(*)
FROM (
SELECT UserId, COUNT(*) AS total
FROM DemoTable
GROUP BY UserId
) AS tbl
WHERE total >= 3;
ผลลัพธ์
+----------+ | COUNT(*) | +----------+ | 2 | +----------+
คำอธิบาย: ค่า 10 ปรากฏ 4 ครั้ง, ค่า 20 ปรากฏ 4 ครั้ง → มี 2 ค่าที่ตรงเงื่อนไข
รูปแบบอื่น: แสดงค่าที่ซ้ำพร้อมจำนวน
SELECT UserId, COUNT(*) AS cnt FROM DemoTable GROUP BY UserId HAVING COUNT(*) >= 3;
+--------+-----+ | UserId | cnt | +--------+-----+ | 10 | 4 | | 20 | 4 | +--------+-----+