用左联接模拟内联接

时间:2018-09-14 15:38:28

标签: sql

我知道您可以像这样使用左连接来模拟内部连接:

select * from a inner join b on a.Id= b.Id

select * from a left join b on 1 = 1 where a.Id= b.Id

我想知道这个。它也等同于内部联接吗?如何比较性能?

select * from a LEFT join b on  a.Id = b.Id where b.Id IS NOT NULL

1 个答案:

答案 0 :(得分:2)

这等效于内部联接:

select *
from a left join
     b
     on a.Id = b.Id
where b.Id is not null;

编译器是否识别等效性取决于特定的数据库。

内部联接与外部联接的潜在联接路径通常有所不同(内部联接为优化器提供了更多选择)。因此,对于查询的left join版本,其性能可能会有所不同。