开发者社区 问答 正文

找出没有销售GEO POSITIONING SYSTEM的部门

题目:找出没有销售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这个表呢呢?后来就写出了我的第二种解法.
写出来之后,两种方法输出一看,发现结果完全不一样,这是为什么呢?
以下是关系图,大家可以参考以下.
screenshot

展开
收起
吴孟桥 2016-06-15 15:27:54 2105 分享 版权
1 条回答
写回答
取消 提交回答
  • 两个当然不一样 举个例子

    QSALE里面有一个deptment 有销售过两种item 一个是Geo Positioning System 另一个是XXX

    第一个SQL是不会返回这个deptment
    而第二个SQL会返回的 以为这个deptment 也卖过不是Geo Positioning System的item

    总之 第一个SQL是“没有卖过” 第二个SQL是“有没卖过”

    2019-07-17 19:39:25
    赞同 展开评论
问答地址: