ใช้ GROUP BY ร่วมกับ HAVING และ SUM() เพื่อหาค่าที่ปรากฏในแถวที่ระบุ
สร้างตารางตัวอย่าง
mysql> CREATE TABLE DemoTable (
-> StudentId INT,
-> StudentMarks INT
-> );
เพิ่มข้อมูลตัวอย่าง
mysql> INSERT INTO DemoTable VALUES(23, 58); mysql> INSERT INTO DemoTable VALUES(25, 89); mysql> INSERT INTO DemoTable VALUES(26, 58); mysql> INSERT INTO DemoTable VALUES(28, 98);
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+-----------+--------------+ | StudentId | StudentMarks | +-----------+--------------+ | 23 | 58 | | 25 | 89 | | 26 | 58 | | 28 | 98 | +-----------+--------------+
คำสั่งหาคะแนนที่มีทั้ง StudentId 23 และ 26
mysql> SELECT StudentMarks FROM DemoTable
-> GROUP BY StudentMarks
-> HAVING SUM(StudentId = 23) > 0
-> AND SUM(StudentId = 26) > 0;
ผลลัพธ์:
+--------------+ | StudentMarks | +--------------+ | 58 | +--------------+
คำอธิบาย: SUM(StudentId = 23) จะนับจำนวนแถวที่ StudentId เท่ากับ 23 ในแต่ละกลุ่มคะแนน หาก > 0 แปลว่ามีอยู่ ใช้เทคนิคนี้หาค่าที่ซ้ำกันในแถวที่ระบุได้