【转】一个SQL查询出每门课程的成绩都大于80的学生姓名 | 您所在的位置:网站首页 › 筛选每门成绩都大于80 › 【转】一个SQL查询出每门课程的成绩都大于80的学生姓名 |
name kecheng fenshu 张三 语文 81张三 数学 75李四 语文 76李四 数学 90王五 语文 81王五 数学 100王五 英语 90 方法一: 思路:如果能获得一张表,由学生姓名,语文成绩,数学成绩,英语成绩的表,剩下的就是在WHERE条件中筛选及可以获得想要的结果。 具体办法:通过自连接的办法,以“姓名”为连接条件,自连接三次,便可以获得包含又姓名和三门课程成绩的数据行。虽然可以得到想要的数据列。但会有很多冗余重复列! 点评:此方法是根据题目,依题解题,中规中矩! 不过多张表连接非常耗费时间。而且SQL语句也比较复杂,需要注意事项很多。
![]() ![]() 易错点:内表的 score字段必须要取别名,否则会报错 。
方法二: 思路:采用逆向思维想想。。。。。。求三门成绩都大于80的人,也可以是使先查出有成绩小于80 的人,再除去这些人不就是三门成绩都大于80的人了么? 以前学过的数学逻辑逆向思维还真是有用的阿!! 具体办法:先扫描表,查出有成绩小于80的人的姓名,然后再次扫描表,用not in 或not exists 方法。 点评:此方法采用逆向思维,能快速写出高效且简单的 SQL语句。 ![]() |
CopyRight 2018-2019 实验室设备网 版权所有 |