我正在尝试使用SQL查询来找出有多少学生在同一学期学习了2门科目。

我有一个有3行的表格,我想找出哪个学生在同一学期同时研究了科目“4877”和“4897”。但我不知道该如何形容“同一学期”。

student subject semester
1070781 4877    126
1070781 4897    126
1076677 4877    135
1078595 4877    126
1078595 4897    126
1078716 4897    127
1079496 4877    126
1079496 4897    126
1079627 4897    127
1080640 4877    127
...
SELECT student
FROM table
WHERE "studied 4877 and 4897 in the same semester";

学生
1070781
1078595
1079496
...

最佳答案

您可以使用以下查询:

SELECT studentid, semester
FROM mytable
WHERE subject IN (4877, 4897)
GROUP BY studentid, semester
HAVING COUNT(DISTINCT subject) = 2

该查询返回至少一个学期参加过这两个科目的所有学生证。

注意: HAVING子句使用COUNT DISTINCT而不是简单的COUNT,以避免在以下情况下返回假阳性记录:
student subject semester
------------------------
1070781 4877    126
1070781 4877    126

关于sql - 如何在 'same'条件中选择一个值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55702611/

10-10 18:17