您的位置:首页 > 数据库

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)
此查询用来列出所有不存在联系人的客户

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: