sqlzoo错题总结-1

目录

说明

题目1

正解


说明

最近在练习sqlzoo,遇到错题就总结到这里,让自己回顾一下


题目1

数据表nobel如下

题目如下:(属于sqlzoo第三个quiz的第5个选择题)

链接在此:点我到达

Select the code which would show the year when neither a Physics or Chemistry award was given

让我们选出既没有Physics也没有Chemistry奖项颁布的年份

选项如下:

选项1.

 

错误之处:条件语句where中选错了,不是subject而是yr

解释:子查询中选出来的是有Physics或Chemistry奖项颁布的年份,所以where语句中应该是年份yr而不是subject


选项2.

此项是当时选错的选项,表面确实有很大误导性,但是其实和标答有很大差别

错误之处:会输出只有化学奖或物理奖颁发之外的所有年份,不满足题意

解释:from nobel中送来一条数据,比如表中第二条(1960,Literature),进来后会检查其是否满足not in (Chemistry,Physics),很明显这个Literature正好not in,所以就会输出1960这个年份,但是1960这一年中,有化学奖和物理奖颁布,所以这个选项错误了,同理,它会对比每一条数据,当这一年里只有化学奖或物理奖颁布,则正好就不满足not in了,所以会不输出这一年的年份,所以这个查询最终输出的是不包括只有化学奖或物理奖颁发之外的所有年份


选项3.正确


选项4.

错误之处:子查询中select subject很明显错误了,应该是yr

解释:子查询中选出的是化学和物理,是subject,很明显和yr对比不了,所以这里应把子查询中的subject改成yr


选项5.

 错误之处:这个错的比较明显,就是数据表错误了

解释:从数据表nobel中选择数据,所以第一行中的subject应该是nobel


正解

此查询的思路是将有这两个奖项的年份查询出,然后反选这些年份即可,因此可以用子查询来做

即:

SELECT yr #严谨来讲这里最好是SELECT DISTINCT yr
FROM nobel
WHERE yr NOT IN (SELECT yr 
                 FROM nobel
                 WHERE subject IN ('Chemistry','Physics')
			     );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值