当前位置:   article > 正文

PostgreSQL-SQL联表查询LEFT JOIN 数据去重复_postgresql left join

postgresql left join

       我们在使用left join联表查询时,如果table1中的一条记录对应了table2的多条记录,则会重复查出id相同的多条记录。 

1、解决方法一

  1. SELECT t1.*
  2. FROM table1 t1
  3. LEFT JOIN table2 t2 ON t1.id = t2.tid

      第一种方法我们发现还是有重复数据 

2、解决方法二

  1. SELECT tmp.id, max(tmp.name) FROM (
  2. SELECT t1.*
  3. FROM table1 t1
  4. LEFT JOIN table2 t2 ON t1.id = t2.tid
  5. ) tmp group by tmp.id

3、解决方法三

  1. SELECT distinct tmp.id, tmp.name FROM (
  2. SELECT t1.*
  3. FROM table1 t1
  4. LEFT JOIN table2 t2 ON t1.id = t2.tid
  5. ) tmp

4、其他补充

   我们需要查询重复的行的总行数,可以进行如下操作:

  1. SELECT tmp.id, count(tmp.name) as count FROM (
  2. SELECT t1.*
  3. FROM table1 t1
  4. LEFT JOIN table2 t2 ON t1.id = t2.tid
  5. ) tmp group by tmp.id order by id asc

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/597508
推荐阅读
相关标签
  

闽ICP备14008679号