SQL exists not exists
2015-10-30 23:26
309 查看
--exists (sql 返回结果集,为真) --not exists (sql 不返回结果集,为真) --如下:
--表A ID NAME 1 A1 2 A2 3 A3--表BID AID NAME11 B122 B232 B3--表A和表B是1对多的关系 A.ID => B.AIDSELECT ID,NAMEFROM AWHERE EXIST (SELECT*FROMBWHERE A.ID=B.AID)--执行结果为1 A12 A2--原因可以按照如下分析SELECT ID,NAMEFROM AWHEREEXISTS(SELECT*FROM BWHEREB.AID=1)---> SELECT * FROM B WHERE B.AID=1有值,返回真,所以有数据SELECT ID,NAMEFROM AWHEREEXISTS(SELECT*FROM BWHEREB.AID=2)---> SELECT * FROM B WHERE B.AID=2有值,返回真,所以有数据SELECT ID,NAMEFROM AWHEREEXISTS(SELECT*FROM BWHEREB.AID=3)---> SELECT * FROM B WHERE B.AID=3无值,返回假,所以没有数据
--NOT EXISTS 就是反过来SELECT ID,NAME FROM A WHERE NOT EXIST (SELECT * FROM B WHERE A.ID=B.AID)--执行结果为3 A3
表结构:temp.customer(cust_num) 主键:cust_num
表结构:temp.contact(cnt_id,cust_num) 主键:cnt_id表结构:temp.contact_detail(cnt_id,address,phone) 主键:cnt_id查询 :select cust_num from temp.customer custwhere not exists (select 1 from temp.contact contwhere cust.cust_num = cont.cust_num)
此查询用来列出所有不存在联系人的客户
相关文章推荐
- sqlplus/RMAN/lsnrctl 等工具连接缓慢
- MySQL运行两个或多个实例
- mysql5.6.26改变默认数据目录问题
- ecshop的Mysql操作类
- oracle数据库体系结构
- Nutz笔记-数据库篇
- Nutz笔记-数据库篇
- 工作日志
- 关系型数据库常用基础概念知识精简归纳
- 记一次ORACLE 8I standby增加数据文件操作
- 第三,四章 数据库和数据表的(增删改查,重命名等)基本操作
- ORACLE 中ROWNUM用法总结! (转)
- PL/SQL编程重点语句输出整理
- Web项目中对配置文件中的密码进行加密(数据库连接密码)
- Oracle 游标使用全解
- Oracle wm_concat 列转行
- 转:Oracle中的rownum不能使用大于>的问题
- mysql密码重置
- 第二章 Mysql 数据类型简介--(整数类型、浮点数类型和定点数类型,日期与时间类型,字符串类型,二进制类型)
- SQL中存储过程和自定义函数的区别(转载)