sql语句的exist总结

首先借用别人的成果:http://www.cnblogs.com/jerome-rong/archive/2013/03/27/2985505.html

 exist 大多数情况下都用于与 in 进行比较,这方面的比较上面的博客讲的很清楚了。

总结就是

SELECT * FROM 数据库1 WHERE EXISTS (SELECT * FROM 数据库2 WHERE 数据库2. 列名 = 数据库1.列名)    (sql1)

EXISTS 代替 in 前提是在条件中带上两个库的相等条件

 

再来看一个sql语句,:

SELECT * FROM(SELECT * FROM 数据库1 LEFT JOIN数据库2 ON 数据库1.列名 = 数据库2. 列名WHERE 条件 UNION SELECT * FROM 数据库2 WHERE NOT EXISTS (SELECT * FROM(SELECT * FROM 数据库1 LEFT JOIN数据库2 ON 数据库1.列名 = 数据库2. 列名WHERE 条件))   (sql2)

sql2 作用是 当 数据1 查询不到 结果时 ,去数据库2 查询结果 

这时是把 not exist 内的查询语句 当成 false 和 true 进行判断 。

当 红字的sql语句能查到结果时,sql2 变为

SELECT * FROM(SELECT * FROM 数据库1 LEFT JOIN数据库2 ON 数据库1.列名 = 数据库2. 列名WHERE 条件 UNION SELECT * FROM 数据库2 WHERE false 

即 SELECT * FROM(SELECT * FROM 数据库1 LEFT JOIN数据库2 ON 数据库1.列名 = 数据库2. 列名WHERE 条件

当 红字的sql语句能查不到结果时,sql2 变为

SELECT * FROM(SELECT * FROM 数据库1 LEFT JOIN数据库2 ON 数据库1.列名 = 数据库2. 列名WHERE 条件 UNION SELECT * FROM 数据库2 WHERE true

SELECT * FROM 数据库2

 

转载于:https://www.cnblogs.com/methinkjj/p/6475188.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值