之前对oracle的exits关键字的作用存在误区,先写此文记录一下:
见sql:
delete from a where exists (select null from b where b.id1=a.id1 and b.id2=a.id2)
这里是满足 a.id1=b.id1 and a.id2=b.id2的记录均会被删除。
之前理解为只用存在满足a.id1=b.id1 and a.id2=b.id2条件的记录,那么a表中所有记录均会被删除。
这样理解是基于对oracle 内部查找机制的不熟悉,只看到的语句的前部分和字面意思导致。
所以深入理解oracle执行的机制,很重要。