SQL中 in和exists的区别

2022-10-03 10:39:28

exists用法

SELECT
	t2.*FROM
	NCAQ.T_SECURITY_FILE t2WHEREEXISTS(SELECT
		t.FILE_IDFROM
		NCAQ.T_READ_CASE tWHERE
		t2.IID= t.FILE_IDAND t.NAME='胡忆思')AND t2.REC_STATUS='0'

exists的用法与in作用相同但是用法稍微有些区别:

1、exists是紧跟着外部表where的,外部表与内部表相连结的条件写在内部表的where中;
2、in是在where后面直接加上值的范围的,例如:

SELECT
	t2.*FROM
	NCAQ.T_SECURITY_FILE t2WHERE  t2.idin(...)

,并且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表数据大的情况

  • 作者:Silver gradient
  • 原文链接:https://blog.csdn.net/z19950712/article/details/119786546
    更新时间:2022-10-03 10:39:28