SQL进阶教程之1.2自连接

自连接用法

  • 排列组合(重复排列/不重复排列/组合)
  • 删除重复项
  • 查找局部不一致的列
  • 排序

用法1:可重排列
应用场景:把所有可能出现的组合全部罗列一遍
案例:求出products中name列的所有排列结果

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

用法2:case when 行转列
应用场景:需要把原数据的行变成列,列变成行
案例:把所有男性/女性分别汇总成一列

原始表poptbl_sex
原有的男性/女性分别汇总为一列

用法3:update 同步更新
应用场景:由于update会在更新结果上继续更新,因此单独更新会出现错误,此时需要用到case when 同时更新
案例:薪资>300000 薪资变为9成,薪资大于250000,小于280000薪资变为1.2倍数

原始表salary
case when 划分情况实现了同时更新

用法4:case when +子查询
应用场景:需要查询的信息同时与两个表有关系
案例:查询各课程及月份,有该课程打圈,没有打叉

原始表coursemaster
原始表opencourses
case when作为判断,当满足相应id在某范围内则打勾,否则打叉

用法5:case when 聚合函数
应用场景:需要使用多种聚合函数,当满足相应情况聚合相应结果
案例:求各学生主要社团id,如果只有一个社团则该是该社团id,若多个社团,按照flag判断

原始表studentclub
满足count(*)=1则为club_id,否则找flag为Y的作为社团id

你可能感兴趣的:(SQL进阶教程之1.2自连接)