只是小人物

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

name   kecheng   fenshu
张三     语文       81
张三     数学       75
李四     语文       76
李四     数学       90
王五     语文       81
王五     数学       100
王五     英语       90

准备数据的sql代码:

create table score(id int primary key auto_increment,name varchar(20),subject varchar(20),score int);

insert into score values

(null,'张三','语文',81),

(null,'张三','数学',75),

(null,'李四','语文',76),

(null,'李四','数学',90),

(null,'王五','语文',81),

(null,'王五','数学',100),

(null,'王五 ','英语',90);

 

提示:当百思不得其解时,请理想思维,把小变成大做,把大变成小做,

 

答案:
A: select distinct name from score  where  name not in (select distinct name from score where score<=80)

 

B:select distince name  from score t1 where 80< all (select t2.score from score t2 where t1.name=t2.name);

 

 

总结:A方法是反面求解 ,先找到分数有小于80的人,再取反。

            B方法是正面求解 ,注意all的用法。

posted on 2012-07-15 10:54  只是小人物  阅读(1879)  评论(0编辑  收藏  举报