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
相关推荐
黑桃小柒711 分钟前
Django模型关系:从一对多到多对多全解析
数据库·django·sqlite
上海安当技术21 分钟前
统一身份认证平台怎么落地?11 个异构业务系统接入 ASP 的完整实施路径
数据库·servlet·架构·kubernetes·jenkins
在水一缸1 小时前
PGSimCity:当数据库内核变成一座可以漫步的城市
数据库·postgresql·可视化·开源项目·数据库内核·pgsimcity·技术科普
jnrjian1 小时前
psql 执行多个 sql 文件
数据库·sql
@insist1234 小时前
信息系统管理工程师-运维人员管理与核心运维过程(上篇)
数据库·软考·软件水平考试·信息系统管理工程师·软考信管
muddjsv4 小时前
SQLite 零基础 CRUD 实战详解:增删改查标准语法与高危避坑
数据库·sqlite
~光~~5 小时前
【嵌入式linux学习_OV8858 bring up】L2_V4L2与Ov8858
linux·数据库·学习
菜地里的小菜鸟5 小时前
达梦数据库备份与恢复
数据库·达梦·达梦数据库备份与恢复
小蒜学长6 小时前
基于SpringBoot的社区供暖管理系统设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端
llwszx6 小时前
Redis ZSet 完全指南:从应用场景到核心原理
数据库·redis·缓存·跳表·哈希表·zset