我有一个表,它有两列,其中包含来自两个不同表的两个外键。
这是我的关系表:
我想选择那些可以说 id 3 和 4 两种语言的学生。
我如何写一个查询给我前 12 、 14
你可以试一试:
SELECT
student_id,
COUNT(*) total
FROM your_table
WHERE language_id IN (3,4)
GROUP BY student_id
HAVING COUNT(*) = 2;
Run Code Online (Sandbox Code Playgroud)
OnlyIN不能确保学生同时参与语言 id 3 & 4。
您需要使用GROUP BY student_id HAVING COUNT(*) = 2以确保那些student_ids 参与到结果中language id 3 & 4
另一种解决方案是使用INNER JOIN. 但它没有规模。
SELECT
A.student_id
FROM your_table A
INNER JOIN your_table B ON A.student_id = B.student_id
AND A.language_id = 3 AND B.language_id = 4
Run Code Online (Sandbox Code Playgroud)