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


在这两种情况下,即在查询中不使用“RIGHT”或“LEFT”关键字时,MySQL 会将其视为 INNER JOIN 查询并返回结果。这是因为 RIGHT、LEFT 和 INNER JOIN 之间的唯一区别在于 RIGHT 或 LEFT 关键字。为了理解这一点,我们以两个名为 tbl_1 和 tbl_2 的表为例,它们包含以下数据 -

mysql> Select * from tbl_1;
+----+--------+
| Id | Name   |
+----+--------+
| 1  | Gaurav |
| 2  | Rahul  |
| 3  | Raman  |
| 4  | Aarav  |
+----+--------+
4 rows in set (0.00 sec)

mysql> Select * from tbl_2;
+----+---------+
| Id | Name    |
+----+---------+
| A  | Aarav   |
| B  | Mohan   |
| C  | Jai     |
| D  | Harshit |
+----+---------+
4 rows in set (0.00 sec)

现在,使用关键字 RIGHT 的 RIGHT JOIN 查询如下所示 -

mysql> SELECT tbl_1.id,tbl_2.id FROM tbl_1 RIGHT JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+------+----+
| id   | id |
+------+----+
| 4    | A  |
| NULL | B  |
| NULL | C  |
| NULL | D  |
+------+----+
4 rows in set (0.00 sec)

现在,在以下查询中,我们没有使用关键字 RIGHT -

mysql> Select tbl_1.id,tbl_2.id FROM tbl_1 JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+----+----+
| id | id |
+----+----+
| 4  | A  |
+----+----+
1 row in set (0.00 sec)

从上面的结果集中,我们可以观察到,不使用关键字“RIGHT”时,MySQL 会将其视为 INNER JOIN 查询并相应地返回结果。

现在,使用关键字 LEFT 的 LEFT JOIN 查询如下所示 -

mysql> SELECT tbl_1.id,tbl_2.id FROM tbl_1 LEFT JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+----+------+
| id | id   |
+----+------+
| 1  | NULL |
| 2  | NULL |
| 3  | NULL |
| 4  | A    |
+----+------+
4 rows in set (0.02 sec)

现在,在以下查询中,我们没有使用关键字 LEFT -

mysql> Select tbl_1.id,tbl_2.id FROM tbl_1 JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+----+----+
| id | id |
+----+----+
| 4  | A  |
+----+----+
1 row in set (0.00 sec)

从上面的结果集中,我们可以观察到,不使用关键字“LEFT”时,MySQL 会将其视为 INNER JOIN 查询并相应地返回结果。

更新于: 2020年6月20日

77 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告