我有两个表: 考试(学生 ID、科目 ID)、 主题(主题ID)
并且想要选择所有科目都经过考试的学生。怎么做? 不使用 GROUP 和 COUNT 是否可以?
最佳答案
您可以通过多种方式做到这一点。其中之一:
DECLARE @students TABLE ( id INT )
DECLARE @exams TABLE ( id INT )
DECLARE @studentexams TABLE
(
studentid INT ,
examid INT
)
INSERT INTO @exams
VALUES ( 1 ),
( 2 )
INSERT INTO @students
VALUES ( 1 ),
( 2 ),
( 3 )
INSERT INTO @studentexams
VALUES ( 1, 1 ),
( 1, 2 ),
( 2, 1 )
SELECT *
FROM @students s
WHERE NOT EXISTS ( SELECT *
FROM @exams e
WHERE e.id NOT IN ( SELECT se.examid
FROM @studentexams se
WHERE se.studentid = s.id ) )
输出:
id
1
关于SQL - 选择在每个科目上都参加过考试的学生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28252775/