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
相关推荐
龙亘川7 小时前
城市公共安全治理如何从“人海战术“走向“数据驱动“?
大数据·数据库·人工智能·安全·microsoft·智慧城市·数据可视化
betazhou8 小时前
Apache Seatunnel 抽取SQL server实时同步到Oracle-多表同步(五)
数据库·oracle·sqlserver·apache·seatunnel
神也畏惧菠萝8 小时前
Coze 工作流数据库 Day06:架构与高级循环控制的深度技术分析
数据库·架构·llm·coze·coze数据库·数据库流程结构
麦壳饼8 小时前
SonnetDB:空间函数别名的参数与兼容边界
数据库·sonnetdb
花间相见8 小时前
【计算基础|MySQL11】事务与隔离级别
sql·mysql·adb·架构
han68898 小时前
jmeter操作数据库
数据库·jmeter
星马梦缘8 小时前
人工智能学院游戏设计大赛决赛 · 执行提纲
数据库·人工智能·游戏
eleven_4u9 小时前
MySQL引擎层是如何工作的
数据库·mysql
love静思冥想9 小时前
CLOB中JSON查询agent字段值(Oracle11g)
sql·oracle·json
adinnet20269 小时前
企业级 NL2SQL 的重要基础:数据库 Schema 自动理解与元数据管理
数据库