关于 SQLite 的 EXISTS 与 NOT EXISTS

栏目: 数据库 · 发布时间: 6年前

内容简介:话不多说先来看看表结构:显而易见 Pid 存放的 Person 的 id ;下面重点(奇葩需求!!!!)

话不多说先来看看表结构:

关于  <a href='https://www.codercto.com/topics/18894.html'>SQLite</a>  的 EXISTS 与 NOT EXISTS

显而易见 Pid 存放的 Person 的 id ;下面重点(奇葩需求!!!!)

我需要向表一(Person)里插入几条数据(...)这时候不会对表二做任何操作。

需求:查询表一(Person)条件是表二(Person_Visison)里有没有表一(Person)的 id 如果有则不返回 结果集,没有则返回。

上代码:                       ( :这是我封好的js主要看 SQL 语句)

1 select('SELECT * FROM Person WHERE NOT EXISTS(SELECT * FROM Person_Visison  WHERE Person_Visison.Pid=Person.id) ');
  • 不相关子查询:子查询的查询条件不依赖于父查询的称为不相关子查询。
  • 相关子查询:子查询的查询条件依赖于外层父查询的某个属性值的称为相关子查询,带EXISTS 的子查询就是相关子查询。
  • EXISTS表示存在量词:带有EXISTS的子查询不返回任何记录的数据,只返回逻辑值“True”或“False”。

相关子查询执行过程:先在外层查询中取“学生表”的第一行记录,用该记录的相关的属性值(在内层WHERE子句中给定的)处理内层查询,若外层的WHERE子句返回“TRUE”值,则这条记录放入结果表中。然后再取下一行记录;重复上述过程直到外层表的记录全部遍历一次为止。

  • Exists:若子查询的结果集非空时,返回“True”;若子查询的结果集为空时,返回“False” 。
  • NOT EXISTS :若子查询结果为空,返回“TRUE”值;若子查询的结果集非空时,返回 “FALSE。 

嘿嘿嘿好理解多了吧!!!!!!!

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2019-02/156714.htm


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Creative Selection

Creative Selection

Ken Kocienda / St. Martin's Press / 2018-9-4 / USD 28.99

Hundreds of millions of people use Apple products every day; several thousand work on Apple's campus in Cupertino, California; but only a handful sit at the drawing board. Creative Selection recounts ......一起来看看 《Creative Selection》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具