SQL進階教程之1.2自連接

自連接用法

  • 排列組合(重復排列/不重復排列/組合)
  • 刪除重復項
  • 查找局部不一致的列
  • 排序

用法1:可重排列
應用場景:把所有可能出現(xiàn)的組合全部羅列一遍
案例:求出products中name列的所有排列結果

原始表products
使用cross join得到所有排列結果

用法2:case when 行轉列
應用場景:需要把原數(shù)據(jù)的行變成列,列變成行
案例:把所有男性/女性分別匯總成一列

原始表poptbl_sex
原有的男性/女性分別匯總為一列

用法3:update 同步更新
應用場景:由于update會在更新結果上繼續(xù)更新,因此單獨更新會出現(xiàn)錯誤,此時需要用到case when 同時更新
案例:薪資>300000 薪資變?yōu)?成,薪資大于250000,小于280000薪資變?yōu)?.2倍數(shù)

原始表salary
case when 劃分情況實現(xiàn)了同時更新

用法4:case when +子查詢
應用場景:需要查詢的信息同時與兩個表有關系
案例:查詢各課程及月份,有該課程打圈,沒有打叉

原始表coursemaster
原始表opencourses
case when作為判斷,當滿足相應id在某范圍內則打勾,否則打叉

用法5:case when 聚合函數(shù)
應用場景:需要使用多種聚合函數(shù),當滿足相應情況聚合相應結果
案例:求各學生主要社團id,如果只有一個社團則該是該社團id,若多個社團,按照flag判斷

原始表studentclub
滿足count(*)=1則為club_id,否則找flag為Y的作為社團id
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容