sql - 运行排除重复行的 JOIN 语句
问题描述
我有一个包含重复条目的表(它们具有相同的 uid)。
我想通过使用 GROUP BY 子句从查询结果中删除重复项(其中一个条目是有效的,但它是随机的。我只能通过 rid 将它与 db2 连接来找出值是什么。我使用的是聚合函数(MAX 或 MIN)来保留一行,但我遇到的问题是我无法选择我需要的行。这导致从我的查询中获得的行数减少。
SELECT
MAX(db1.id) AS id,
FROM db1
LEFT JOIN db2 ON
db1.rid = db2.rid
GROUP BY r.uid
我能做些什么来解决这个问题吗?我在 Amazon Redshift 上运行查询。
例子:
潜在客户表
编号 | uid | 摆脱
1 | 啊!111
2 | 啊!123
3 | bbb | 312
销售表
编号 | 摆脱
1 | 111
2 | 123
3 | 312
因为 uid 相同,leads 表有一个重复的条目(ID 1 和 2)。我必须删除其中一个重复项,但这必须是 ID 2,因为可以在销售表中找到 ID 1(由 rid 链接)。
解决方案
您可以使用 row_number() 函数
with cte as
(
SELECT *, row_number() over(partition by r.uid order by db1.id desc) as rn
FROM db1
LEFT JOIN db2 ON
db1.rid = db2.rid
)
delete from cte where rn<>1
推荐阅读
- angular - 尝试在子组件的 ngOnit 中打印其值时,@input 变量未定义
- reactjs - 运行 gzipped react 代码给出错误“Uncaught SyntaxError: Unexpected token '<”
- spring-boot - 在 Spring Boot 应用程序中以编程方式执行命令
- mysql - 从第二个表存储过程mysql中仅通过其ID选择一个图像
- reactjs - 如何在具有百分比和条件的反应挂钩中使用 useState?
- python - Python中elif语句的语法错误
- python - 布尔到数据框熊猫
- android - Swipable 在 Android 中不起作用(Expo Cli)
- python - pytorch CNN 模型中的 BatchNorm2d 错误
- python - 双向 LSTM 合并模式解释