前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >左连接,右连接,内连接,外连接

左连接,右连接,内连接,外连接

作者头像
名字是乱打的
发布2021-12-22 15:22:05
发布2021-12-22 15:22:05
2.2K00
代码可运行
举报
文章被收录于专栏:软件工程软件工程
运行总次数:0
代码可运行

这里之前一直没有写,主要原因觉得好多东西比较基础,没想都写,但是后来觉得,学习的话应该是扫盲和汇总的阶段,所以这里也单独写一下

一 左连接,右连接

我们先看结果再分析:

代码语言:javascript
代码运行次数:0
复制
两个表:
A(id,name)
数据:(1,张三)(2,李四)(3,王五)
B(id,name)
数据:(1,学生)(2,老师)(4,校长)

左连接结果:
select A.*,B.* from A left join B on A.id=B.id;
1 张三 1 学生
2 李四 2 老师
3 王五  NULL NULL

右链接结果:
select A.*,B.* from A right join B on A.id=B.id;
1 张三 1 学生
2 李四 2 老师
NULL NULL 4 校长
左连接和右连接区别为:语法公式不同、基础表不同、结果集不同。
  • 1.语法公式不同 左连接 left join 右连接 right join
  • 2.主表不同 左连接 以左表为主表 右连接 以右表为主表 主表数据完全保留, 副表字段匹配到则数据保留,填充到结果集, 未匹配到数据置空.
  • 3.结果集不同
看完了你可能优点疑惑

A left join B和B right join A不一样吗? 其实显示的数据行大致相同,但是数据位置不同而已.

二 内连接,和外连接
inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。
代码语言:javascript
代码运行次数:0
复制
A表          
 
  id   name  
 
  1  小王
 
  2  小李
 
  3  小刘
 
  B表
 
  id  A_id  job
 
  1  2    老师
 
  2  4    程序员

内连接:(只有2张表条件匹配的行才能显示)

代码语言:javascript
代码运行次数:0
复制
select a.name,b.job from A a  inner join B b on a.id=b.A_id
 
本条sql,满足a.id=b.Aid的只有一条数据,所以只能得到一条记录
 
  小李  老师
full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。

1.MySQL使用全外连接查询数据出现的问题 使用sql语句:

代码语言:javascript
代码运行次数:0
复制
SELECT * from people1 p1 full JOIN people2 p2 ON p1.id=p2.id

查询数据信息,会提示错误
原因是MySQL数据库不支持全外连接查询。

2.解决方案 可以使用unionl将左连接和右连接得到的结果合并起来,就可以得到想到的结果

代码语言:javascript
代码运行次数:0
复制
SELECT * from people1 p1 LEFT JOIN people2 p2 ON p1.id=p2.id UNION 
SELECT * from people1 p1 RIGHT JOIN people2 p2 ON p1.id=p2.id;
从结果上来看,外连接类似于左连接和右连接的合并
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 左连接,右连接
    • 左连接和右连接区别为:语法公式不同、基础表不同、结果集不同。
  • 看完了你可能优点疑惑
  • 二 内连接,和外连接
    • inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。
    • full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。
  • 从结果上来看,外连接类似于左连接和右连接的合并
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档