left join 与 right join 的区别

left join 与 right join 的区别

一、建表 (SQL Server)

  1. 创建 j1 表

    1
    2
    3
    4
    5
    6
    7
    8
    9
    use db1
    go

    create table dbo.j1
    (
    id int not null,
    name varchar
    )
    go

表中数据:

idname
1a
2b
3c
  1. 创建 j2 表
1
2
3
4
5
6
7
8
9
use db1
go

create table dbo.j2
(
id int not null,
name varchar
)
go

表中数据:

idname
2q
3w
2e

二、区别

  1. j1 left join j2
1
2
3
select j1.id as j1id, j1.name as j1name, j2.id as j2id, j2.name as j2name
from j1
left join j2 on j1.id = j2.id;

left join 结果:

j1idj1namej2idj2name
1anullnull
2b2q
2b2e
3c3w
  1. j1 right join j2
1
2
3
select j1.id as j1id, j1.name as j1name, j2.id as j2id, j2.name as j2name
from j1
right join j2 on j1.id = j2.id;

right join 结果:

j1idj1namej2idj2name
2b2q
3c3w
2b2e

可以看出区别在于 id为1的记录。

  • j1 left join j2 时, 以 j1 为主表, id为1的记录会显示在 join 结果中
  • j1 right join j2 时,以 j2 为主表, j2中不包含 id为1的记录, 因此id为1的记录不会显示在 join 结果中。

总结: left join 的结果 跟 right join 的结果,其记录数量是不相同的。 具体结果需要具体分析。


left join 与 right join 的区别
https://pygyme.com/关系数据库/left-join-与-right-join-的区别/
作者
PYGYME
发布于
2022年8月29日
许可协议