经典SQL-条件子查询示例

1.用一条SQL语句 查询出每门课都大于80分的学生姓名 

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

 

分析:直接表示出“每门课都大于80分的学生姓名”不怎么好表示,我们换个思维,先select出“有课程小于或者等于80分的学生姓名”集合A,

然后再从表中找出学生姓名不在集合A中的学生姓名;

第一步:select出“有课程小于或者等于80分的学生姓名” ;SQL语句:

SELECT DISTINCT NAME FROM t_kecheng WHERE fenshu <=80

第二步:从表中找出学生姓名不在集合A中的学生姓名;SQL语句:

SELECT DISTINCT NAME FROM t_kecheng WHERE NAME NOT IN(SELECT DISTINCT NAME FROM t_kecheng WHERE fenshu <=80); 

备注:DISTINCT关键字,表示去除重复字段结果,取唯一字段结果;NOT IN(A)条件语句,表示不在集体A里;

这个示例,让我逆向思维,考虑某些问题;当然这里用到了条件子查询;

 

posted on 2012-12-11 10:15  曹锋  阅读(508)  评论(0)    收藏  举报

导航