Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

นับจำนวนค่าที่ปรากฏ 3 ครั้งขึ้นไปในคอลัมน์ MySQL

ใช้ 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   |
+--------+-----+