开发者社区> 问答> 正文

找出没有销售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 2026 0
1 条回答
写回答
取消 提交回答
  • 两个当然不一样 举个例子

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

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

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

    2019-07-17 19:39:25
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载