一张学生成绩表score,部分内容如下:
name course grade
张三 操作系统 67
张三 数据结构 86
李四 软件工程 89
用一条SQL 语句查询出每门课都大于80 分的学生姓名,SQL语句实现正确的是:( )
Select distinct name from score where name not in(Select name from score where grade <= 80);
Select distinct name from score where name in(Select name from score where grade <= 80);
Select name from score where name not in(Select name from score where grade <= 80);
Select name from score where name in(Select name from score where grade <= 80);
where name not in(Select name from score where grade <= 80);选择分数不在80分及以下的名字,你想小王数据结构81,小王操作系统99......就会选出多个小王。
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词 DISTINCT 用于返回唯一不同的值。
Select name from score where grade <= 80
where name not in(Select name from score where grade <= 80)通过上面语句则现在剩下的就是每门成绩都大于80分的学生,但是同一个学生会有很多门课(感觉这题没有考虑重名情况),所以要去重,同一个人显示一次即可,用distinct实现:
Select distinct name from score where name not in(Select name from score where grade <= 80);
(Select name from score where grade <= 80)--查询出存在分数小于80人员的名单where name not in(Select name from score where grade <= 80)--查找出不在分数小于80人员名单的人员 在此题中,小于80分人员名单是(张三) 那么就相当于 where name not in ("张三")。所以我觉得可以不用去重啊 ,因为这里只有一个李四,如果是个多个李四那么需要distinct去重(单纯从此题的角度考虑)