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
相关推荐
zzh0817 分钟前
MySQL主从复制读写分离笔记
数据库·mysql
APIshop9 分钟前
京东关键词搜索接口完全指南
java·开发语言·数据库
ZzzZZzzzZZZzzzz…14 分钟前
MySQL备份还原方法1----xtrabackup
linux·运维·数据库·mysql·xtrabackup·物理备份
实泽有之,无泽虚之1 小时前
ORA-12518:Oracle 监听程序无法分发客户端连接原因及解决方法
数据库·oracle
Elastic 中国社区官方博客1 小时前
组合 OpenTelemetry 参考架构
大数据·数据库·elasticsearch·搜索引擎·架构
Z_Wonderful1 小时前
在 **Next.js** 中使用 `mysql2` 连接 MySQL 数据库并查询 `xxx` 表的数据
android·数据库
FirstFrost --sy1 小时前
MySql 内外连接
android·数据库·mysql
watersink1 小时前
第16章 案例特训专题【数据库篇】
数据库
爬山算法1 小时前
MongoDB(78)什么是MongoDB的事务?
数据库·mongodb
ego.iblacat2 小时前
MySQL 高可用
数据库·mysql·adb