在编写 RIGHT JOIN 或 LEFT JOIN 查询时不使用关键字“RIGHT”或“LEFT”,MySQL 将返回什么?

介绍

在 MySQL 中,使用JOIN 进行关联查询,可以通过 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, NATURAL JOIN 等语法实现。其中,LEFT JOIN 和 RIGHT JOIN 能够确保可以关联到所有的左(或右)表数据。但是,在编写 RIGHT JOIN 或 LEFT JOIN 查询时不使用关键字“RIGHT”或“LEFT”会发生什么呢?

LEFT JOIN 查询

LEFT JOIN 查询将返回左表中所有的记录以及右表中与左表中记录有关联的记录。

使用 LEFT JOIN 查询

SELECT *

FROM table1

LEFT JOIN table2

ON table1.key = table2.key;

上述代码将返回左表 table1 中所有的记录以及右表 table2 中与 table1 中的 key 有关联的记录。

不使用 LEFT 关键字的查询

在不使用关键字 LEFT 的情况下,我们需要将查询顺序进行调换,并且使用 WHERE 进行过滤:

SELECT *

FROM table1, table2

WHERE table1.key = table2.key(+);

在上述代码中,我们使用了“(+)”符号来表示关联,它同样可以被解译为“LEFT JOIN”。

验证查询结果

我们可以使用以下代码来验证两种查询方法的结果是否一致:

SELECT *

FROM table1, table2

WHERE table1.key = table2.key(+)

UNION

SELECT *

FROM table1

LEFT JOIN table2

ON table1.key = table2.key;

如果上述代码的查询结果是空的,说明两种查询方法得到的结果一致。

RIGHT JOIN 查询

RIGHT JOIN 查询将返回右表中所有的记录以及左表中与右表中记录有关联的记录。

使用 RIGHT JOIN 查询

SELECT *

FROM table1

RIGHT JOIN table2

ON table1.key = table2.key;

上述代码将返回右表 table2 中所有的记录以及左表 table1 中与 table2 中的 key 有关联的记录。

不使用 RIGHT 关键字的查询

在不使用关键字 RIGHT 的情况下,我们需要将查询顺序进行调换,并且使用 WHERE 进行过滤:

SELECT *

FROM table1, table2

WHERE table1.key(+) = table2.key;

在上述代码中,我们使用了“(+)”符号来表示关联,它同样可以被解译为“RIGHT JOIN”。

验证查询结果

我们可以使用以下代码来验证两种查询方法的结果是否一致:

SELECT *

FROM table1, table2

WHERE table1.key(+) = table2.key

UNION

SELECT *

FROM table1

RIGHT JOIN table2

ON table1.key = table2.key;

如果上述代码的查询结果是空的,说明两种查询方法得到的结果一致。

总结

在使用 LEFT JOIN 或 RIGHT JOIN 进行关联查询时,不使用相应关键字并使用其它语法代替时,查询结果与使用关键字的结果是相同的。但是,使用相应关键字能使代码更加简洁易读,建议使用关键字完成相应的操作。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签