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
相关推荐
flypwn2 小时前
TFCCTF 2025 WebLess题解
服务器·前端·数据库
n***i952 小时前
云原生数据库使用体验,与传统数据库差异
数据库·云原生
理想三旬9 小时前
关系数据库
数据库
无心水10 小时前
【分布式利器:RocketMQ】2、RocketMQ消息重复?3种幂等方案,彻底解决重复消费(附代码实操)
网络·数据库·rocketmq·java面试·消息幂等·重复消费·分布式利器
q***985211 小时前
基于人脸识别和 MySQL 的考勤管理系统实现
数据库·mysql
l1t11 小时前
用SQL求解advent of code 2024年23题
数据库·sql·算法
办公解码器12 小时前
Excel工作表打开一次后自动销毁文件,回收站中都找不到
数据库·excel
DO_Community12 小时前
基于AI Agent模板:快速生成 SQL 测试数据
人工智能·python·sql·ai·llm·ai编程
爬山算法13 小时前
Redis(127)Redis的内部数据结构是什么?
数据结构·数据库·redis
应用市场13 小时前
Qt QTreeView深度解析:从原理到实战应用
开发语言·数据库·qt