left join on用法_MySQL 多表查询 quot;Joinquot;+“case when”语句总结
本部分講述:join系列全部總結和case when語句用法
join系列:表加法、Cross join 、inner join、left join、right join、full outer join
練習數據
插入數據的代碼,可以在這里直接復制:
絢麗的小海螺:從零學會SQL-入門(Navicat)?zhuanlan.zhihu.com一、表加法
兩張表進行合并
selectunion 和union all 的區別:union會去重并降低效率,union all直接追加。union前后是兩端select語句而非結果集
二、Cross join
笛卡爾積如圖,把所有笛卡爾連接的結果都展示出來,在實際應用中使用較少
三、inner join
根據指定列取兩個表都存在的做交叉聯結
select a.學號,a.姓名,b.課程號 from student as a INNER JOIN score as b on a.學號 = b.學號四、left join
以左表為主,右表沒有的信息被甜為空
select a.學號,a.姓名,b.課程號 from student as a LEFT JOIN score as b on a.學號 = b.學號左連接的拓展問題
求差集,如果只想左連接找出如圖所示的結果,非常簡單,只需要對右表的關鍵字加個判斷是否為null
select a.學號,a.姓名,b.課程號 from student as a left JOIN score as b on a.學號 = b.學號 where b.學號 is Null;五、right join
與left join相反
select a.學號,a.姓名,b.課程號 from student as a right JOIN score as b on a.學號 = b.學號六 out join
外連接,即求兩個集合的并集。從笛卡爾積的角度講就是從笛卡爾積中挑出ON子句條件成立的記錄,然后加上左表中剩余的記錄,最后加上右表中剩余的記錄。另外MySQL不支持OUTER JOIN,但是我們可以對左連接和右連接的結果做UNION操作來實現。
連接后的篩選結果依然正常使用group by having等函數
七 Case when
case when 如何用?case when 在面試中十分常見,也十分使用
圖中的序號代表執行順序,意味著when的條件是互斥的。找到滿足的條件則退出case 語句,但通常我們使用case語句是做匯總分析比如如下:
使用0,1小技巧,先給表增加兩列,再分組統計
SELECT 課程號, case when 成績>=60 then 1 else 0 end as 及格人數, case when 成績<60 then 1 else 0 end as 不及格人數 from score生成如下結果,再進行分組統計
整合結果如下
SELECT 課程號, sum(case when 成績>=60 then 1 else 0 end) as 及格人數, sum(case when 成績<60 then 1 else 0 end) as 不及格人數 from score GROUP BY 課程號case when更為常見使用場景是分段統計
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的left join on用法_MySQL 多表查询 quot;Joinquot;+“case when”语句总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编语言—移位指令(如何正确
- 下一篇: mybatisplus执行sql语句_一