SQL中关于EXISTS的嵌套子查询问题

SQL语句中,没有蕴含式和全程量词,所以这个时候,我们可以用离散数学的理论,将命题变化,然后使用EXISTS语句来查询,确实有点难以理解,下面我举一个例子来解释:

这是我对表的定义,一共使用两张表,orders和customers
对于查询来说,我们首先需要知道的是,要查询的最终内容是什么:

根据题目要求,我们不难得知,我们需要查询的是顾客姓名(也就是一个顾客,可以理解为姓名是他的一个属性),好,那现在需要一个什么样的顾客呢,需要一个查询至少购买过顾客“张三”购买过的全部零件的顾客,对于这个顾客而言,他身上有这个标签,我们可以把这个标签放进EXISTS/NOT EXISTS语句中,因为EXISTS语句中是一个bool表达式,对于查询的所有顾客,一旦他满足这个表达式,就放入结果中。

然后我们确定,到底这个“标签”该怎么去写,我们将命题符号化

p:张三买过零件y

q:存在一个x,买过零件y

正常我们需要满足p->q,但是不能实现,经过命题的化简,我们可以化简为,不存在这样一个人叫张三且他买过的全部零件x没买过。

这里要使用not exists语句

/*查询至少购买过顾客“张三”购买过的全部零件的顾客姓名。*/
SELECT DISTINCT C_NAME FROM CUSTOMER C1
WHERE NOT EXISTS
(
SELECT *FROM CUSTOMER C2,LINEITEM L2,ORDERS O2
WHERE C2.C_NAME='张三' AND O2.O_CUSTKEY=C2.C_CUSTKEY AND L2.L_ORDERKEY=O2.O_ORDERKEY
AND NOT EXISTS
(
SELECT *FROM LINEITEM L3,ORDERS O3
WHERE(C1.C_CUSTKEY=O3.O_CUSTKEY AND L3.L_PARTKEY=L2.L_PARTKEY AND L3.L_ORDERKEY=O3.O_ORDERKEY)
)
)

SQL中关于EXISTS的嵌套子查询问题相关推荐

  1. mysql case 嵌套子查询语句_SQL查询语句SELECT中带有case when嵌套子查询判断的问题...

    展开全部 1.创建两张测试表 create table test_case1(id number, value varchar2(200)); create table test_case2(id n ...

  2. sql之嵌套查询中的带exists谓词的子查询

    数据库系统概论之嵌套查询中的带exists谓词的子查询 一.exists谓词概述:exists谓词代表存在量词.带有exists谓词的子查询不返回任何数据,只产生逻辑真值"true" ...

  3. SQL语句中的嵌套子查询

    文章目录 相关子查询 自身连接 一开始在学习的SQL语句的时候,没有感受到嵌套子查询的厉害,尤其是相关子查询.现在发现它的厉害之处,写下来记录! 相关子查询 先抛出一个问题来引出这个话题.查找每个学生 ...

  4. oracle sql 转换成 hive sql -子查询转关联查询(三).子查询中嵌套子查询

    其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格式,可在评论或私信我,俺现在一天一看 Oracle转换hive 其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格 ...

  5. from server sql 拼接统计两个子查询_[SQL SERVER系列]之嵌套子查询和相关子查询

    子查询有两种类型,一种是只返回一个单值的子查询,这时它可以用在一个单值可以使用的地方,这时子查询可以看作是一个拥有返回值的函数:另外一种是返回一列值的子查询,这时子查询可以看作是一个在内存中临时存在的 ...

  6. oracle多表嵌套查询使用,oracle sql 多表 嵌套子查询 连接查询, join where exist i...

    转:http://hi.baidu.com/delphi_relive/blog/item/d7c0034a49c4932208f7ef21.html in 和 exists也是很好区别的. in 是 ...

  7. SQL:多表查询语句(嵌套子查询,多表连接)操作实例

    一.SQL Server多表查询,包括连接操作和嵌套子查询 背景知识: 一.连接:分成内连接和外连接,内连接相当于取交集,外连接相当于取并集 二.嵌套子查询:连接操作浪费资源,使用嵌套子查询可以避免连 ...

  8. oracle sql 多表 嵌套子查询 连接查询, join where exist in 的区别

    sql中exits和in的区别 转:http://hi.baidu.com/delphi_relive/blog/item/d7c0034a49c4932208f7ef21.html in 和 exi ...

  9. MySQL中嵌套子查询删除出错解决方案

    MySQL中嵌套子查询做删除操作会出错,例如下面的SQL: delete from table1 where number in (select number from table2) 执行提示: Y ...

最新文章

  1. 【TF-IDF】传统方法TF-IDF解决短文本相似度问题
  2. 微信小程序手机预览不正常,打开手机调试后预览正常
  3. java实现回文验证_LeetCode 精选 TOP 面试题(Java 实现)—— 验证回文串
  4. linux内核设计与实现---从内核出发
  5. android绘制环形进度_Android动态自定义圆形进度条
  6. [转载] python中字符串编码形式及其所占字节
  7. Mysql(二)——简单查询及示例
  8. Dubbo学习总结(9)——Apache Dubbo Roadmap 2019
  9. mysql udf禁用_如何禁用 mysql 的 udf 功能
  10. 蓝桥杯竞赛C/C++组不支持C++11特性
  11. Angular学习笔记04——绑定和管道
  12. icesat2:strong beam and weak beam
  13. 博弈论(取石子专题)
  14. 用python爬取网易云音乐评论
  15. 关于虚拟机中IPI中断的思考
  16. 人脸核身--第二篇--启用 H5人脸认证
  17. 外包也开始卷起来了???
  18. 简述async和await写法
  19. 同样是做网站,为何你的不赚钱
  20. Introduction to 3D Game Programming with DirectX 11学习笔记 6 Direct3D中的绘制(一)

热门文章

  1. 【Cpp】关于位运算的常用实用方法个人总结以及加减乘除的实现。「加减乘除」
  2. 【数据可视化】数据可视化七大发展趋势
  3. 580. 统计各专业学生人数
  4. MIUI用户迅雷云加速 将加速大数据变为商业价值
  5. IDEA调试程序按钮初探 (Step Over/Step Into/Force Step Into/Step Out/Evaluate Expression/Resume Program/条件断点)
  6. 营销狂人杜国楹的两大顶级思维
  7. PostgreSQL/pgsql自动添加分区子表
  8. 湖北三职没有计算机一级证,2021湖北省考报名:应届毕业生没发毕业证怎么填写毕业证编号...
  9. 如何让电脑可以同时用公司内网和手机热点上网。(针对WIN10)
  10. 学画画要花多少钱_高考学画画要花多少钱