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

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

1、解决方法一

sql 复制代码
SELECT t1.*
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.tid

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

2、解决方法二

sql 复制代码
SELECT tmp.id, max(tmp.name) FROM (
SELECT t1.*
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.tid
) tmp group by tmp.id

3、解决方法三

sql 复制代码
SELECT distinct tmp.id, tmp.name FROM (
SELECT t1.*
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.tid
) tmp

4、其他补充

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

sql 复制代码
SELECT tmp.id, count(tmp.name) as count FROM (
SELECT t1.*
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.tid
) tmp group by tmp.id order by id asc
相关推荐
m0_716255008 小时前
第一部分 数据开发 面试全题 模拟口述版(自问自答)
java·数据库·面试
L-影8 小时前
常见的 ORM 工具
开发语言·数据库·fastapi·orm
噢,我明白了8 小时前
MySQL常用指令--标准的电商/后台管理系统基础结构
数据库·mysql
2403_883261098 小时前
如何用 nodeType 与 nodeName 准确判断当前节点的物理类型
jvm·数据库·python
qq_413502028 小时前
如何利用 Block Tree 避免不必要的子组件重渲染?Vue3 编译黑科技
jvm·数据库·python
丑八怪大丑8 小时前
SQL数据类型
java·数据库·sql
m0_624578598 小时前
CSS定位如何实现多行文字垂直居中_通过绝对定位模拟表格
jvm·数据库·python
李温候8 小时前
互联网大厂Java求职者面试全攻略
java·数据库·面试·orm·构建工具·web框架·互联网大厂
dfdfadffa9 小时前
mysql如何排查网络延迟引起的数据库连接问题_使用ping测试
jvm·数据库·python
2303_821287389 小时前
JavaScript中Redux-Thunk处理异步Action的任务流
jvm·数据库·python