SQL中 in和exists的区别
exists用法SELECTt2.*FROMNCAQ.T_SECURITY_FILE t2WHEREEXISTS (SELECTt.FILE_IDFROMNCAQ.T_READ_CASE tWHEREt2.IID = t.FILE_IDAND t.NAME = '胡忆思' )AND t2.REC_STATUS = '0'exists的用法与in作用相同但是用法稍微有些区别:1、exists是紧跟着
·
exists用法
SELECT
t2.*
FROM
NCAQ.T_SECURITY_FILE t2
WHERE
EXISTS (
SELECT
t.FILE_ID
FROM
NCAQ.T_READ_CASE t
WHERE
t2.IID = t.FILE_ID
AND t.NAME = '胡忆思' )
AND t2.REC_STATUS = '0'
exists的用法与in作用相同但是用法稍微有些区别:
1、exists是紧跟着外部表where的,外部表与内部表相连结的条件写在内部表的where中;
2、in是在where后面直接加上值的范围的,例如:
SELECT
t2.*
FROM
NCAQ.T_SECURITY_FILE t2
WHERE t2.id in (...)
,并且in后面跟着取值的范围条件;
3、当子查询(内部表)数据量比外部表大时,exists的效率要优于in;
4、select * from A where id in(select id from B)
结论:in()适合B表比A表数据小的情况
5、select a.* from A a where exists(select 1 from B b where a.id=b.id)
结论:exists()适合B表比A表数据大的情况
更多推荐
已为社区贡献7条内容
所有评论(0)