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
相关推荐
小王C语言8 小时前
MySQL 内置函数:日期函数、字符串函数、数学函数、其他函数
数据库·mysql
ClouGence9 小时前
当 AI 开始直接操作数据库,传统数据库管理工具还有必要吗?
数据库·后端·agent
Hugh-Yu-1301239 小时前
zhangxuefeng-skill配置教程
数据库
布莱克6059 小时前
理解B+树:原理、特性与应用场景
数据结构·数据库·mysql
冰暮流星9 小时前
mysql之排序查询
数据库·mysql
71777710 小时前
让权限治理成为可复制资产:Gitee Team 空间配置方案与安全级别落地详解
数据库·gitee
今天AI了吗10 小时前
Agent & AI 名词大扫盲
数据库·人工智能·python·sql·rust
葡萄城技术团队10 小时前
告别宽表拖拽:SpreadJS 如何让 Web 表格承接 Excel 操作习惯
数据库·html·excel
2603_9664372611 小时前
格式化之后数据还能恢复吗?说清恢复条件
linux·运维·数据库
倔强的石头10611 小时前
时序数据库的难题不只在写入速度
数据库·时序数据库