用一條SQL語句 查詢出每門課都大於80分的學生姓名


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的用法。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: