表 AAID NAME
10002031 张三
22300998 李四
31232132 王五
表B
BID AID PROJECT SCORE
1 10002031 铅球 50
2 10002031 铁饼 60
3 22300998 铅球 70
查询出 所有 SCORE 都在60分以上的人现在这样写的:select * from 表A
inner join 表B on 表A.AID = 表B.AID
where 表B.SCORE > 60 这样的结果是 只要有一个项目是大于60分就查出来,要求是查出所有项目都是60分以上的人(只要有一个项目小于60就不查出来)。
10002031 张三
22300998 李四
31232132 王五
表B
BID AID PROJECT SCORE
1 10002031 铅球 50
2 10002031 铁饼 60
3 22300998 铅球 70
查询出 所有 SCORE 都在60分以上的人现在这样写的:select * from 表A
inner join 表B on 表A.AID = 表B.AID
where 表B.SCORE > 60 这样的结果是 只要有一个项目是大于60分就查出来,要求是查出所有项目都是60分以上的人(只要有一个项目小于60就不查出来)。
(select distinct AID from b where SCORE < 60)
inner join 表B on 表A.AID = 表B.AID
group by 表A.AID,表A.NAME having min(B.SCORE)>60
insert into a values('10002031', '张三')
insert into a values('22300998', '李四')
insert into a values('31232132', '王五')
create table B(BID int,AID varchar(10),PROJECT varchar(10),SCORE int)
insert into b values(1 ,'10002031', '铅球', 50)
insert into b values(2 ,'10002031', '铁饼', 60)
insert into b values(3 ,'22300998', '铅球', 70)
goselect a.* from a where aid not in (select distinct AID from b where SCORE < 60)
/*
AID NAME
---------- ----------
22300998 李四
31232132 王五(所影响的行数为 2 行)
*/select a.* from a
where aid in (select distinct AID from b) and
aid not in (select distinct AID from b where SCORE < 60)
/*
AID NAME
---------- ----------
22300998 李四(所影响的行数为 1 行)
*/select distinct a.* from a , b
where a.AID = b.AID and
a.aid not in (select distinct AID from b where SCORE < 60)
/*
AID NAME
---------- ----------
22300998 李四(所影响的行数为 1 行)
*/drop table a , b