关于 SQLite 的 EXISTS 与 NOT EXISTS

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

内容简介:话不多说先来看看表结构:显而易见 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


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

查看所有标签

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

Go Web 编程

Go Web 编程

[新加坡]Sau Sheong Chang(郑兆雄) / 黄健宏 / 人民邮电出版社 / 2017-11-22 / 79

《Go Web 编程》原名《Go Web Programming》,原书由新加坡开发者郑兆雄(Sau Sheong Chang)创作、 Manning 出版社出版,人名邮电出版社引进了该书的中文版权,并将其交由黄健宏进行翻译。 《Go Web 编程》一书围绕一个网络论坛 作为例子,教授读者如何使用请求处理器、多路复用器、模板引擎、存储系统等核心组件去构建一个 Go Web 应用,然后在该应用......一起来看看 《Go Web 编程》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

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

Markdown 在线编辑器