共计 689 个字符,预计需要花费 2 分钟才能阅读完成。
话不多说先来看看表结构:
显而易见 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。
嘿嘿嘿好理解多了吧!!!!!!!
:
正文完
星哥玩云-微信公众号