SQL RIGHT JOIN 连接两个表并根据一个条件获取行,该条件在两个表中都匹配(在下面的语法中提到的 JOIN 子句之前和之后),并且不匹配的行也可以从 JOIN 子句之后编写的表中可用(在下面的语法中提到)。
SQL Right Join 的图示:
语法:
SELECT *
FROM table1
RIGHT [ OUTER ] JOIN table2
ON table1.column_name=table2.column_name;
SQL RIGHT join 从 table2 中获取一组完整的记录,即 JOIN 子句后面最右边的表,以及 table1 中的匹配记录(取决于可用性)。当不进行匹配时,结果为左侧为 NULL。
语法图 - SQL Right Join
SQL 右联接或右外联接的示例
样品表:食品(foods)
+---------+--------------+-----------+------------+
| ITEM_ID | ITEM_NAME | ITEM_UNIT | COMPANY_ID |
+---------+--------------+-----------+------------+
| 1 | Chex Mix | Pcs | 16 |
| 6 | Cheez-It | Pcs | 15 |
| 2 | BN Biscuit | Pcs | 15 |
| 3 | Mighty Munch | Pcs | 17 |
| 4 | Pot Rice | Pcs | 15 |
| 5 | Jaffa Cakes | Pcs | 18 |
| 7 | Salt n Shake | Pcs | |
+---------+--------------+-----------+------------+
示例表:公司(company)
+------------+---------------+--------------+
| COMPANY_ID | COMPANY_NAME | COMPANY_CITY |
+------------+---------------+--------------+
| 18 | Order All | Boston |
| 15 | Jack Hill Ltd | London |
| 16 | Akas Foods | Delhi |
| 17 | Foodies. | London |
| 19 | sip-n-Bite. | New York |
+------------+---------------+--------------+
要从公司表中获取公司 ID、公司名称和公司城市列,以及从食品表中获取公司 ID、项目名称列,在与这些提到的表进行 OUTER JOIN 后,可以使用以下 SQL 语句:
SQL代码
SELECT company.company_id,company.company_name,
company.company_city,foods.company_id,foods.item_name
FROM company
RIGHT JOIN foods
ON company.company_id = foods.company_id;
解释:
此 SQL 语句将返回 foods 表中的所有行,并且仅返回 company 表中联接字段相等的行,如果 ON 子句与 company 表中的任何记录不匹配,则联接仍将返回行,但 company 表的每一列中都返回 NULL。
输出:
COMPANY_ID COMPANY_NAME COMPANY_CITY COMPANY_ID ITEM_NAME
---------- ------------------------- ------------------------- ---------- --------------
18 Order All Boston 18 Jaffa Cakes
15 Jack Hill Ltd London 15 Pot Rice
15 Jack Hill Ltd London 15 BN Biscuit
15 Jack Hill Ltd London 15 Cheez-It
16 Akas Foods Delhi 16 Chex Mix
17 Foodies. London 17 Mighty Munch
Salt n Shake
此处所示的上述 SQL 语句的输出是使用 Oracle Database 10g Express Edition 获取的
上述示例的图示: