通常exists后的子查询是需要和外面的表建立关联关系的,如
select count(*) from a where exists (select 'x' from b where a.id = b.id)
因为exists只是看子查询是否有结果返回,而并不关心返回的是什么内容,因此通常建议写一个常量,至少性能不可能比select 一个具体的字段出来差,而某些情况下,select具体的字段出来性能可能比select 一个常量出来要差得多。
如果不和外面的表建立关联关系,如
select * from a where exists (select 'x' from b)
这样的sql 虽然也没有错,但貌似无实际意义
where exists(select 'X' from tab)中的'X'
最新推荐文章于 2024-04-19 00:50:39 发布