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

หาคู่ค่าที่ซ้ำกัน (Duplicate Pairs) ใน MySQL ด้วย GROUP BY HAVING

บทความนี้สาธิตการหาคู่ค่าที่ซ้ำกัน (Duplicate Pairs) ระหว่างสองคอลัมน์ (Id, FirstName) โดยใช้ GROUP BY สองคอลัมน์ ร่วมกับ HAVING COUNT(*) = 2

สร้างตารางและข้อมูลทดสอบ

mysql> CREATE TABLE DemoTable748 (Id INT, FirstName VARCHAR(100));
Query OK, 0 rows affected (0.46 sec)

mysql> INSERT INTO DemoTable748 VALUES(100, 'John');
mysql> INSERT INTO DemoTable748 VALUES(100, 'Sam');
mysql> INSERT INTO DemoTable748 VALUES(200, 'Carol');
mysql> INSERT INTO DemoTable748 VALUES(200, 'Carol');  -- Duplicate Pair
mysql> INSERT INTO DemoTable748 VALUES(300, 'Mike');
mysql> INSERT INTO DemoTable748 VALUES(300, 'Sam');

คิวรีหาคู่ (Id, FirstName) ที่ซ้ำกัน 2 ครั้ง

mysql> SELECT Id FROM DemoTable748 
GROUP BY Id, FirstName 
HAVING COUNT(*) = 2;

ผลลัพธ์

+------+
| Id   |
+------+
| 200  |
+------+

คำอธิบาย:

  • GROUP BY Id, FirstName - จัดกลุ่มตามคู่ค่าทั้งสองคอลัมน์
  • HAVING COUNT(*) = 2 - กรองเฉพาะกลุ่มที่มี 2 แถวพอดี (Duplicate Pair)
  • คู่ (200, 'Carol') ปรากฏ 2 ครั้ง → ผ่านเงื่อนไข
  • คู่อื่นๆ ปรากฏ 1 ครั้ง → ไม่ผ่าน

การประยุกต์: เปลี่ยน = 2 เป็น > 1 เพื่อหาคู่ที่ซ้ำอย่างน้อย 1 ครั้ง (2 ครั้งขึ้นไป)