美文网首页
left join的一些问题 数据行数减少、增多 数据重复

left join的一些问题 数据行数减少、增多 数据重复

作者: 徐大亮 | 来源:发表于2019-03-11 11:47 被阅读0次

数据行数减少

  • A表数据
aid name a_id
1 张三 1
2 李四 2
3 王二麻 3
4 周一 4
  • B表数据
bid name b_id
1 语文 1
2 数学 2
3 物理 3
4 英语 4
4 化学 5

SQL:

SELECT * FROM a LEFT JOIN b ON a.a_id=b.b_id WHERE b.b_id > 3

结果:

aid name a_id id(1) name(1) b_id
4 周一 4 4 英语 4

结论:

当where 条件在外,会先聚合后过滤,所以结果会变少

数据行数增多

  • A表数据
aid name a_id
1 张三 1
2 李四 2
3 王二麻 3
4 周一 4
  • B表数据
bid name b_id
1 语文 1
2 数学 2
3 物理 3
4 英语 4
4 化学 4

SQL:

SELECT * FROM a LEFT JOIN b ON a.a_id=b.b_id WHERE b.b_id > 3

结果:

aid name a_id id(1) name(1) b_id
4 周一 4 4 英语 4
4 周一 4 5 化学 4

结论:

因为这个时候B表有重复的b_id,如果这时候计算A表值的count 或者sum ,结果会比预想的大。

虽然很简单,但是很容易犯错误

数据重复 解决方案

  • 使用distinct去重
SELECT DISTINCT a.* FROM a LEFT JOIN b ON a.a_id=b.b_id WHERE b.b_id > 3

查询结果:

aid name a_id
4 周一 4
SELECT DISTINCT * FROM a LEFT JOIN b ON a.a_id=b.b_id WHERE b.b_id > 3
aid name a_id id(1) name(1) b_id
4 周一 4 4 英语 4
4 周一 4 5 化学 4

结论:

distinct用于多个字段时,需要这些字段都相同的时候才会达到滤重的目的。
  • 使用group by去重(推荐使用
SELECT * FROM a LEFT JOIN b ON a.a_id=b.b_id WHERE b.b_id > 3 GROUP BY a.id

查询结果:

aid name a_id id(1) name(1) b_id
4 周一 4 4 英语 4

相关文章

  • left join的一些问题 数据行数减少、增多 数据重复

    数据行数减少 A表数据 B表数据 SQL: 结果: 结论: 数据行数增多 A表数据 B表数据 SQL: 结果: 结...

  • 数据库小结

    1、数据库Left JOIN一对多,Left JOIN左连接,数据不会增多多对一,Left JOIN左连接,数据不...

  • left join 查询数据重复

    使用left join的时候如果出现重复数据,第一可能是左表数据重复了,当排除掉左表数据没有重复的时候,那就是关联...

  • mysql中实现full join

    因为MySQL不支持FULL JOIN,下面是替代方法: left join + union(可去除重复数据)+ ...

  • Hive中的各种join

    准备数据 建表: 导入数据: 实验: inner join left join right join full o...

  • LEFT JOIN

    前端小白,非后端大佬,记录为准,愿世界和平! 表A数据如下 表B数据如下 LEFT JOIN left join是...

  • SQL基础二刷

    1.join 和 left join 区别 总结: join只会满足所有连表条件的符合的数据; left jion...

  • 2018-05-18

    1.join哪几种 left right inner 2.left join是哪个表数据最全 left 3...

  • mysql,事务、锁定、查询

    数据库,也就是学习如何操作数据,管理数据 inner join 和 left join , mysql 不支持 全...

  • left join and 和 where and 的区别

    问:left join on后and连接和where后用and连接 答:left join左连接,左表所有数据拼接...

网友评论

      本文标题:left join的一些问题 数据行数减少、增多 数据重复

      本文链接:https://www.haomeiwen.com/subject/tyevpqtx.html