前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[498]left join、inner join、right join、full outer join的区别

[498]left join、inner join、right join、full outer join的区别

作者头像
周小董
发布于 2022-04-13 06:19:21
发布于 2022-04-13 06:19:21
1.9K00
代码可运行
举报
文章被收录于专栏:python前行者python前行者
运行总次数:0
代码可运行

文章目录

sql的left join 、right join 、inner join之间的区别

  • left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
  • right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
  • inner join(等值连接) 只返回两个表中联结字段相等的行

t_user表

t_class表

sql语句:(左联结)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select u.UserID,u.UserName,c.id,c.name
from t_user u left join t_class c   on  c.id  = u.UserID

运行结果:

sql语句:(右联结)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select u.UserID,u.UserName,c.id,c.name
from t_user u RIGHT join t_class c
                    on  c.id  = u.UserID

运行结构:

sql语句(自然联结):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select u.UserID,u.UserName,c.id,c.name
from t_user u inner join t_class c
                    on  c.id  = u.UserID

运行结果:

根据构建的虚拟表,更新相同的字段值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
update dmdc.bond_issuser_rela_detail c inner join (SELECT DISTINCT a.com_uni_code,a.com_chi_name,b.com_uni_code as code2,b.com_chi_name as name2
    FROM dmdc.bond_issuser_rela_detail a
    LEFT JOIN dmdc.t_com_info b 
    ON a.com_chi_name=b.com_chi_name
    WHERE a.com_uni_code is NULL and b.com_uni_code is not NULL ORDER BY b.com_uni_code) d on d.com_chi_name=c.com_chi_name
set c.com_uni_code = d.code2

说明:select查询造的虚拟表当做查询源的时候, 这个select语句是完全独立的, 不和他以外的SQL相通

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 update  表1  a1  inner join  (select 字段1,字段2 from 表1 where 条件) a2 on 条件
        set   a1.字段1 = a2.字段2 

先造出来一个虚拟表,然后通过更新虚拟表的方式去实现具体的更新;

FULL OUTER JOIN

SQL FULL OUTER JOIN 关键字

FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.

FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。

SQL FULL OUTER JOIN 语法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
演示数据库

下面是选自 “Websites” 表的数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+

下面是 “access_log” 网站访问记录表的数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+-----+---------+-------+------------+
| aid | site_id | count | date       |
+-----+---------+-------+------------+
|   1 |       1 |    45 | 2016-05-10 |
|   2 |       3 |   100 | 2016-05-13 |
|   3 |       1 |   230 | 2016-05-14 |
|   4 |       2 |    10 | 2016-05-14 |
|   5 |       5 |   205 | 2016-05-14 |
|   6 |       4 |    13 | 2016-05-15 |
|   7 |       3 |   220 | 2016-05-15 |
|   8 |       5 |   545 | 2016-05-16 |
|   9 |       3 |   201 | 2016-05-17 |
+-----+---------+-------+------------+
9 rows in set (0.00 sec)
SQL FULL OUTER JOIN 实例

MySQL中不支持 FULL OUTER JOIN,你可以在 SQL Server 测试以下实例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT Websites.name, access_log.count, access_log.date
FROM Websites
FULL OUTER JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count DESC;

**注释:**FULL OUTER JOIN 关键字返回左表(Websites)和右表(access_log)中所有的行。如果 “Websites” 表中的行在 “access_log” 中没有匹配或者 “access_log” 表中的行在 “Websites” 表中没有匹配,也会列出这些行。

A inner join B 取交集。 A left join B 取 A 全部,B 没有对应的值为 null。 A right join B 取 B 全部 A 没有对应的值为 null。 A full outer join B 取并集,彼此没有对应的值为 null。 对应条件在 on 后面填写。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/01/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • sql的left join 、right join 、inner join之间的区别
  • FULL OUTER JOIN
    • SQL FULL OUTER JOIN 关键字
    • SQL FULL OUTER JOIN 语法
    • 演示数据库
    • SQL FULL OUTER JOIN 实例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档