小易说IT 小易说IT

左连接(LEFT JOIN) vs 右连接(RIGHT JOIN)

一句话核心:哪边是左表、哪边是右表,谁就保留全部数据

语法顺序:A LEFT JOIN B → A 是左表;A RIGHT JOIN B → A 是右表

1. 左连接 LEFT JOIN(LEFT OUTER JOIN)

保留左表所有行,匹配右表符合条件的数据;匹配不到的右表字段填 NULL

-- A全部保留,B匹配上才带出,没匹配B字段为null
SELECT * FROM A LEFT JOIN B ON A.id = B.a_id;

示例: A 表:

id

name

1

张三

2

李四

3

王五

B 表:

a_id

order_no

1

O001

左连接结果:

id

name

a_id

order_no

1

张三

1

O001

2

李四

null

null

3

王五

null

null

2. 右连接 RIGHT JOIN(RIGHT OUTER JOIN)

保留右表所有行,匹配左表符合条件的数据;匹配不到的左表字段填 NULL

-- B全部保留,A匹配上才带出,没匹配A字段为null
SELECT * FROM A RIGHT JOIN B ON A.id = B.a_id;

沿用上面的表,右连接结果:

id

name

a_id

order_no

1

张三

1

O001

如果 B 有多条、A 没有对应记录,A 侧就是 null。

3. 关键对比表

类型

保留谁的全部数据

匹配不上时

等价写法

LEFT JOIN

FROM 后面第一张表(左表)

右表字段 NULL

A LEFT JOIN B = B RIGHT JOIN A

RIGHT JOIN

JOIN 后面那张表(右表)

左表字段 NULL

A RIGHT JOIN B = B LEFT JOIN A

✅ 开发习惯:大部分场景优先用左连接,少用右连接,可读性更好,不容易搞反表顺序。

补充和内连接对比快速回顾

  • INNER JOIN:只保留两边能匹配上的数据,两边不匹配的都丢掉

  • LEFT JOIN:左表全留

  • RIGHT JOIN:右表全留


本文原创作者:易君召,详见:https://www.yijunzhao.cc/about,转载请注明出处。

原文链接 https://www.yijunzhao.cc/archives/left-join-vs-right-join-differences

欢迎访问 https://www.yijunzhao.cc/

https://www.yijunzhao.cc/