leftjoin多表联合查询_SQL中的多表查询

多表查询,顾名思义,即返回的结果涉及到不止一张表的信息,连接的信息在原表上既可能增加了行的数据,也可能是增加了列的数据,分别对应表的加法和表的联结。

表的加法

  • union:表结构相同时,将两个表的数据按行合并,删除重复行
  • Union all:与union相同,但不删除重复行

表的联结

  • 交叉联结(cross join):也称为“笛卡尔积”,如下图所示,是R中的每个元素和S中每个元素的组合,cross join得到的行数是两个集合中元素数量的乘积。运算比较庞大,实际应用较少。

8eb74d53f3be47dadac1877f8d75d5a8.png
  • 内联结(inner join):也可简写为join,查找同时存在于两张表的数据
  • 左联结(left join):将左侧表作为主表,数据全部取出,右侧表只取出和左侧表匹配部分,不匹配部分返回空值,加上条件where 右表.共同字段=null,可以筛选出不匹配数据
  • 右联结(right join):将右侧表作为主表,数据全部取出,左侧表只取出和右侧表匹配部分,不匹配部分返回空值
  • 全联结(full join):返回左表和右表的所有行,左表和右表有匹配时进行合并,不匹配返回空值(mysql不支持)
  • 注意事项
    • 当场景需要取出其中一个表的全部数据时,用左连接或者有连接,其余全部用内连接
    • 三表联结:连续用两次join

case表达式

  • 判断是否符合条件并给出符合条件的结果,适用于分类、分段
  • 汇总分类数据:case表达式+聚合函数,如sum(case when……then 1……)

多表查询练习题

练习网站:sqlzoo

92831f5dd27170a55c797d410b0b18ca.png
题目涉及的三个表格

eb2ae39de80214ddf60cdb98e0eaeeeb.png

4b8f10c55247cc41f19514293ffe9d95.png

029e9d2dc96d3d4da0968656a1c78b11.png

72bf33eb13ef0942966b00d270aad165.png

b33a5373de3f51e1e9ce109a8577a927.png

ebbe07907c978d50cc68135a496cec45.png

1eca56731b72de100464ca19e9e4b00b.png

557b3fcfec4330aaaf3fb992443eab61.png

969738b63db0f024ec26e27f82e67830.png

587e5bd3296bb09694464e2ef7f7a9ac.png

69b1295c225a6006a4eef72f6e178cac.png

93d1899febe70a27fe206ccab0a409e9.png

4f316ff9b5ddf38f05114848135219c6.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值