Để tìm các giá trị xuất hiện cho nhiều ID cụ thể, sử dụng GROUP BY kết hợp HAVING với SUM(condition).
Tạo bảng và dữ liệu
mysql> CREATE TABLE DemoTable (
-> StudentId INT,
-> StudentMarks INT
-> );
Query OK, 0 rows affected (4.71 sec)
mysql> INSERT INTO DemoTable VALUES(23, 58); Query OK, 1 row affected (0.70 sec) mysql> INSERT INTO DemoTable VALUES(25, 89); Query OK, 1 row affected (0.46 sec) mysql> INSERT INTO DemoTable VALUES(26, 58); Query OK, 1 row affected (1.13 sec) mysql> INSERT INTO DemoTable VALUES(28, 98); Query OK, 1 row affected (0.86 sec)
Truy vấn tìm điểm số chung của StudentId 23 và 26
mysql> SELECT StudentMarks FROM DemoTable
-> GROUP BY StudentMarks
-> HAVING SUM(StudentId = 23) > 0
-> AND SUM(StudentId = 26) > 0;
Kết quả:
+--------------+ | StudentMarks | +--------------+ | 58 | +--------------+ 1 row in set (0.00 sec)
Cơ chế: SUM(StudentId = 23) đếm số hàng có StudentId = 23 trong mỗi nhóm điểm. > 0 nghĩa là điểm đó xuất hiện cho học sinh đó.