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
相关推荐
雨辰AI2 分钟前
SpringBoot3 项目国产化改造完整流程|从 MySQL 到人大金仓落地
java·数据库·后端·mysql·政务
一个天蝎座 白勺 程序猿4 分钟前
存储治理:表空间自动目录创建与国产操作系统生态适配
数据库·kingbasees
2401_8844541512 分钟前
mysql处理复杂SQL性能_InnoDB优化器与MyISAM差异
jvm·数据库·python
weelinking35 分钟前
【企业级】企业级大模型合规实战:数据安全与跨境传输的技术解决方案
数据库·人工智能·机器学习·云计算·github
m0_4708576436 分钟前
golang如何实现目录大小统计_golang目录大小统计实现方案
jvm·数据库·python
rockey62736 分钟前
AScript如何实现LINQ语法
sql·c#·.net·linq·script·eval·expression
穗余1 小时前
RAG为什么必须用向量数据库?
数据库
weixin_444012931 小时前
如何在多实例管理时隐藏MySQL版本信息_安全混淆与配置
jvm·数据库·python
weixin_459753941 小时前
SQL处理大规模分组聚合的内存限制_调整服务器配置
jvm·数据库·python
Kingairy1 小时前
保证数据一致性技术
数据库