【发布时间】:2019-06-29 01:11:42
【问题描述】:
我想构造一个不使用 INNER JOIN 的查询。我发现像这样的 INNER:
Select A.Name
from A INNER JOIN B on (A.id1 = B.id1 AND A.id2 = B.id2)
Where B.id = @Id
产生相同的:
select A.Name
from A
where
A.id1 in (select B.id1 from B where B.id = @Id)
and
A.id2 in (select B.id2 from B where B.id = @Id)
不是吗?
请注意,我的问题不是关于它是否更好,而是关于它是否是等价物或者该 INNER 没有等价物。
【问题讨论】:
-
为什么?内连接比子查询好得多。
-
我的问题是关于功能的等效性,而不是它是否更好。
-
内部连接是否优于子查询取决于 dbms 和其他东西。
-
您不能用 IN 或 EXISTS 条件替换 INNER JOIN。他们的意思不同。有时可以将一个重写为另一个,但并非总是如此。
标签: sql