天天看点

sqlserver leftjoin出现重复数据_数据分析-第五关-1125

第一部分:表的加法

  • 合并去重后的表:union
  • 合并保留重复行的表:union all
sqlserver leftjoin出现重复数据_数据分析-第五关-1125

文氏图:加法 union

sqlserver leftjoin出现重复数据_数据分析-第五关-1125

第二部分:表的联结

  • 交叉联结-cross join on :笛卡尔积-表1 n行n列,表2 m行m列- 表1和表2 联结成n+m行n*m列
  • 内联结-inner join on :查找出同时存在两张表中的数据。先取出符合条件的行,然后交叉联结。
  • 外联结:左联结-left join 和右联结- right join
    • 左联结:以左边的表为主表,先把左表全部取出,再取出右边符合条件的行,最后交叉联结。
    • 右联结:以右边的表为主表,先把右表全部取出,再取出左边符合条件的行,最后交叉联结。
  • 全联结:full join: 返回左表和右表中的所有行,若某行和另一个表有匹配的行,则此行会合并,其他不匹配的则返回对应的行。
sqlserver leftjoin出现重复数据_数据分析-第五关-1125

内联结-inner join

sqlserver leftjoin出现重复数据_数据分析-第五关-1125

左联结-left join

sqlserver leftjoin出现重复数据_数据分析-第五关-1125

左联结不包含公共部分

第三部分:联结应用案例

sqlserver leftjoin出现重复数据_数据分析-第五关-1125

左联结应用

sqlserver leftjoin出现重复数据_数据分析-第五关-1125
sqlserver leftjoin出现重复数据_数据分析-第五关-1125

第四部分:case表达式

case when <>ther<>---------------------1

when <>ther<>---------------------2

when <>ther<>

.................

else<>

end

满足1 执行end, 若1 不满足,会执行2,2满足,执行end,2若不满足,则以此类推,运行.......

sqlserver leftjoin出现重复数据_数据分析-第五关-1125

总结:

  • 以行为单位对表进行联结-union(并集)intersect(交集)except(差集)
      • union -并集 union all--保留重复行--------------------------------增加记录行数
      • intersect-交集-应用于两张表,选取出它们当中的公共记录-----------减少记录行数
      • except-差集-A-B:选取A中除去AB交集部分------------------------------减少记录行数

集合运算就是对满足同一规则的记录进行加减等四则运算,通过集合运算可以得到两个表中记录的集合或者公共记录的集合,又或者其中某个表的记录的集合。

集合运算注意事项:

    1. 集合运算符会除去重复的记录
    2. 作为运算对象的记录的列数必须相同
    3. 作为运算对象的记录中列的类型必须一致
    4. 可以使用任何select语句,但是order by子句只能 在最后使用一次
  • 以列为单位对表进行联结-inner join(内联结),outer join(外联结),cross join(交叉联结)
    • inner join(内联结)----选取同时存在两张表中的数据
    • outer join(外联结)----只要数据存在某一张表中就能读取出来,------可以得到固定行数的结果。分为左连接和右连接-区分主表
    • cross join(交叉联结)----笛卡尔积,两张表中行数的乘积。

进行联结时需要在FROM子句中使用多张表;进行内连接时必须使用ON子句,并且书写在from和where之间;使用联结时select子句中的列需要按照<表的列名>.<别名>的格式进行书写。

复习sql的运行顺序:

from- where- group by- having- select- order by- limit

继续阅读