题目:找出没有销售GEO POSITIONING SYSTEM的部门
标准解:
SELECT deptname
FROM qdept
where deptname not in
(select deptname from qsale
where itemname = 'Geo Positioning System')
我的解法
(select distinct deptname from qsale
where itemname != 'Geo Positioning System')
第一种解法我能明白它的逻辑.
但是我后来想,,既然qsale已经有我需要的两个变量了,为何还要引用qdept这个表呢呢?后来就写出了我的第二种解法.
写出来之后,两种方法输出一看,发现结果完全不一样,这是为什么呢?
以下是关系图,大家可以参考以下.
两个当然不一样 举个例子
QSALE里面有一个deptment 有销售过两种item 一个是Geo Positioning System 另一个是XXX
第一个SQL是不会返回这个deptment
而第二个SQL会返回的 以为这个deptment 也卖过不是Geo Positioning System的item
总之 第一个SQL是“没有卖过” 第二个SQL是“有没卖过”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。