SQL的JOIN家族
博客专区 > 克松 的博客 > 博客详情
SQL的JOIN家族
克松 发表于3年前
SQL的JOIN家族
  • 发表于 3年前
  • 阅读 10
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 各种JOIN

--先造数据

create table a

(id int,

name nvarchar(50))

insert into a(id,name)


insert into a(id,name)values(1,'张三')

values(2,'李四')

insert into a(id,name)

values(3,'王五')

insert into a(id,name)

values(4,'赵六')

 

 

create table b

(id int,

name nvarchar(50))

insert into b(id,name)

values(1,'张三')

insert into b(id,name)

values(2,'李四')

insert into b(id,name)

values(3,'王五')

insert into b(id,name)

values(5,'赵六')

 

select * from a

1张三

2李四

3王五

4赵六

select * from b

1张三

2李四

3王五

5赵六

一、inner join(等价于join)表示内连接,在两个表中存在至少一个匹配时,INNER JOIN 关键字返回行。

select * from a join b on a.id=b.id

1张三1张三

2李四2李四

3王五3王五

二、left join表示左连接,会从左表那里返回所有的行,即使在右表中没有匹配的行。

select * from a left join b on a.id=b.id

1张三1张三

2李四2李四

3王五3王五

4赵六NULLNULL

三、right join表示右连接,会从右表那里返回所有的行,即使在左表中没有匹配的行。

select * from a right join b on a.id=b.id

 

1张三1张三

2李四2李四

3王五3王五

NULLNULL5赵六

四、full join表示全连接,只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。

select * from a full join b on a.id=b.id

1张三1张三

2李四2李四

3王五3王五

4赵六NULLNULL

NULLNULL5赵六

五、cross join连接用于生成两张表的笛卡尔集。

select * from a cross join b

 

1张三1张三

2李四1张三

3王五1张三

4赵六1张三

1张三2李四

2李四2李四

3王五2李四

4赵六2李四

1张三3王五

2李四3王五

3王五3王五

4赵六3王五

1张三5赵六

2李四5赵六

3王五5赵六

4赵六5赵六

 

 


 

共有 人打赏支持
克松
粉丝 2
博文 2
码字总数 1191
×
克松
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: