首页 > 解决方案 > SQL查询全部存在

问题描述

我需要一个查询来列出使用下表中的所有可用课程的学生。

declare @Course table (CourseID nvarchar(4))
declare @CourseStudent table 
                       (
                           CourseID nvarchar(4),
                           Student nvarchar(50)
                       )

insert into @Course values ('SOS1')
insert into @Course values ('MAT3')
insert into @Course values ('FEN2')

insert into @CourseStudent values ('MAT3', 'Mehmet')
insert into @CourseStudent values ('SOS1', 'Ahmet')
insert into @CourseStudent values ('MAT3', 'Ahmet')
insert into @CourseStudent values ('FEN2', 'Ahmet')
insert into @CourseStudent values ('SOS1', 'Ali')
insert into @CourseStudent values ('FEN2', 'Ayse')

select * from @Course

select * from @CourseStudent

标签: sql-serverexists

解决方案


这是一个关系划分问题。有很多方法可以解决它。在这种情况下最简单的使用COUNT

SELECT cs.Student
FROM @CourseStudent cs
GROUP BY cs.Student
HAVING COUNT(*) = (SELECT COUNT(*) FROM @Course);

这不涉及学生参加的课程不在@Course


推荐阅读