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

ค้นหาแถวที่มีค่าคอลัมน์เหมือนกันใน MySQL

ใช้ 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 แปลว่ามีอยู่ ใช้เทคนิคนี้หาค่าที่ซ้ำกันในแถวที่ระบุได้