经典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里;
这个示例,让我逆向思维,考虑某些问题;当然这里用到了条件子查询;
浙公网安备 33010602011771号