select sno,count(1) as no from test x
where sno <>1 and not exists (select * from test y
where sno = 1 and not exists (select * from test z
where z.sno=x.sno and z.cno=y.cno ))
group by sno
having count(1)=(select count(1) from test where sno=1)
最初由 lodge 发布
[B]如果不用考虑SQL SERVER 的话, 这么写看着很爽
SELECT 学号 FROM TABLE A
WHERE NOT EXISTS(
SELECT 课程号 FROM TABLE WHERE 学号=1
MINUS
SELECT 课程号 FROM TABLE WHERE 学号=A.学号)
CCW同学的问题, 这么做
SELECT 学号 FROM TABLE A
WHERE NOT EXISTS(
SELECT 课程号 FROM TABLE WHERE 学号=1
MINUS
SELECT 课程号 FROM TABLE WHERE 学号=A.学号)
AND NOT EXISTS(
SELECT 课程号 FROM TABLE WHERE 学号=A.学号
MINUS
SELECT 课程号 FROM TABLE WHERE 学号=1)
一直觉得SQL SERVER 不支持MINUS是一种农民作风 , 上述SQL文, 不用MINUS 只好把MINUS用NOT EXISTS 来换看着很不爽
SELECT 课程号 FROM TABLE WHERE 学号=A.学号
MINUS
SELECT 课程号 FROM TABLE WHERE 学号=1
不得不变成下面这种写法
SELECT 课程号 FROM TABLE B
WHERE NOT EXISTS(SELECT NULL FROM TABLE
WHERE 学号=1 AND 课程号=B.课程号)
AND B.学号 = A.学号 [/B]