当子查询中查询字段不存在时,SQL不会报错 作者: 许庭洲 时间: 2012-7-27 16:27
1 ,SELECT * FROM Test WHERE sName NOT IN(SELECT sName FROM Test WHERE sScore<80) //通过排除子查询低于80分的学生姓名
2, SELECT * FROM Test WHERE sName IN (SELECT sName FROM Test GROUP BY sName HAVING MIN(sScore)>80)//通过子查询和having子句判断,过滤出大于80分的学生
3, 两个SQL语句功能相同,都是查找数据库表Test的学生成绩大于80分的学生记录;
4, 第一条SQL语句比第二条SQL语句的执行效率要高,减少了HAVING 语句的判断。作者: 张腾达 时间: 2012-7-27 16:28
许庭洲 发表于 2012-7-27 16:27
1 ,SELECT * FROM Test WHERE sName NOT IN(SELECT sName FROM Test WHERE sScore80)//通过子查询和having ...
1.SELECT * FROM Test
WHERE sName NOT IN(SELECT sName FROM Test WHERE sScore<80)
2.SELECT * FROM Test
WHERE sName IN (SELECT sName FROM Test GROUP BY sName HAVING MIN(sScore)>80)
在这里两条查询语句结果一样,相对来说第一条查询语句效率高于第二条(因为第二条查询语句多了分组查询)。