SQL LEFT JOIN
和 RIGHT JOIN
:它们总是等价的吗?
SQL 的 LEFT JOIN
和 RIGHT JOIN
子句组合来自两个表的数据。虽然在某些情况下看似可以互换,但存在一个关键区别。
让我们检查两个表:
<code class="language-sql">CREATE TABLE Table1 (id INT, Name VARCHAR(10)); CREATE TABLE Table2 (id INT, Name VARCHAR(10));</code>
正在填充Table1
:
<code>Id | Name ---|----- 1 | A 2 | B</code>
和Table2
:
<code>Id | Name ---|----- 1 | A 2 | B 3 | C</code>
查询:
<code class="language-sql">SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.id = Table2.id; SELECT * FROM Table2 RIGHT JOIN Table1 ON Table1.id = Table2.id;</code>
在此特定实例中产生相同的结果。 两者都基于 Table1.id = Table2.id
.
但是,请考虑这个替代方案LEFT JOIN
:
<code class="language-sql">SELECT * FROM Table2 LEFT JOIN Table1 ON Table2.id = Table1.id;</code>
此查询返回 Table2
中的所有行,包括 Table1
中不匹配的行。 RIGHT JOIN
(例如,FROM Table1 RIGHT JOIN Table2
)将表现相反,忽略此类不匹配的行。
因此,虽然 FROM Table1 LEFT JOIN Table2
和 FROM Table2 RIGHT JOIN Table1
在特定条件下可能会产生相似的结果,但连接方向会显着影响输出的完整性。 它们不能普遍互换。
以上是'FROM Table1 LEFT JOIN Table2”和'FROM Table2 RIGHT JOIN Table1”是否始终可以互换?的详细内容。更多信息请关注PHP中文网其他相关文章!