MySQL 多表查询 "Join"+“case when”语句总结

结论: 1 . join系列:表加法用union和unionall,union去重可能降效,unionall直接合并。
2 . Crossjoin:实现笛卡尔积,但实际应用中少用。
3 . 内连接innerjoin:选两表共同数据。
4 . 左连接leftjoin:左表为主,右表不存数据为NULL。
5 . 右连接rightjoin:右表为主,左表不存数据为NULL。
6 . 全外连接fullouterjoin:包含左右表全部数据,未匹配为NULL。
7 . 连接后可用groupby和having聚合筛选结果。
8 . casewhen:用于条件判断和结果逻辑处理,执行顺序明确,适用于汇总分析。
9 . casewhen:常用于分段统计,灵活处理不同条件下的数据分类和聚合。

MySQL中三表子查询的用法和实现方式mysql三表子查询

这就是坑,别在复杂查询中滥用三表子查询,可能导致性能问题。

MySQL 多表查询 "Join"+“case when”语句总结

咱们聊聊MySQL里的Join和Case When,这俩家伙在多表查询里可是大有用武之地。

先说Join系列,这就像是在数据库里做数学里的并集、交集和差集。
比如Union,这货就像数学里的并集,把两个表的数据合在一起,不过它会把重复的记录去掉,这可能会让查询效率打折扣。
UnionAll呢,它就像数学里的并集,不排除重复,直接把两个表的数据拼在一起。

还有CrossJoin,这就像数学里的笛卡尔积,会把两个表里所有可能的组合都列出来,但在实际应用中用得比较少。
InnerJoin,这就像交集,只展示两个表中共同存在的数据,结果是匹配的记录。

接下来是LeftJoin和RightJoin,这两个就像是左集合和右集合的并集,LeftJoin以左表为主,右表中没有匹配的就用NULL填充;RightJoin则以右表为主,左表中没有匹配的也用NULL填充。
至于FullOuterJoin,MySQL原生不支持,但我们可以用Union组合LeftJoin和RightJoin来模拟。

再说Case When,这就像是SQL里的条件分支,用来做条件判断和结果的逻辑处理。
它特别适合做汇总分析,比如我们可以在查询中引入0,1 标记列来进行分组统计。
Case When的条件执行顺序明确,一旦找到满足条件的就退出,这在分段统计或者灵活处理不同条件下的数据分类和聚合时特别有用。

把这两个结合起来,比如在查询员工信息时,根据部门用Case When进行标记或分类统计,就能对多表数据进行复杂查询和分析。

所以说,Join系列是用来关联表,Case When是用来处理查询结果的逻辑,两者搭配,多表查询就变得游刃有余了。