【原创】JOIN 详述(上)

几种常见 join 的用法
创建表
join_order.png
join_user.png
插入数据
image.png

image.png
INNER JOIN

select * from join_user u inner join join_order o on u.id = o.user_id
结果如下:

inner join result.png

结论:在表中存在至少一个匹配时,INNER JOIN 关键字返回行。

LEFT JOIN

select * from join_user u left join join_order o on u.id = o.user_id
结果如下:

left join result.png

结论:left join 会返回左表所有的行,即使右表中没有匹配的行

select * from join_user u left join join_order o on u.id = o.user_id WHERE o.user_id is null
结果如下:

image.png

结论:返回左表特有的行

RIGHT JOIN

select * from join_user u right join join_order o on u.id = o.user_id
结果如下:

right left result.png

结论:right join 会返回右表所有的行,即使左表中没有匹配的行

select * from join_user u right join join_order o on u.id = o.user_id WHERE u.id is null
结果如下:

image.png

结论:会返回右表中独有的行

full join

MySQL 不支持 full join,通过left join 、right join、union 组合实现
select * from join_user u right join join_order o on u.id = o.user_id UNION select * from join_user u left join join_order o on u.id = o.user_id
结果如下:

full join result.png

两表中都没有出现的数据

select * from join_user u right join join_order o on u.id = o.user_id WHERE u.id is null UNION select * from join_user u left join join_order o on u.id = o.user_id WHERE o.user_id is null
结果如下:

image.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,537评论 0 13
  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 1,257评论 0 7
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,857评论 5 116
  • 执行public class B extends A(需要有main方法)的时候会先调用B的父类A中的静态部分(静...
    阳光丶不错阅读 208评论 0 0
  • 读过《上下五千年》、《春秋》、《史记》,也读过美国历史、欧洲简史,从上初中起每学期都要学完一本历史书,学中国近现代...
    花花公举210阅读 1,031评论 3 10