sql - 从两列上具有重复值的行中获取 ID,以便稍后更新它们
问题描述
我有下表:
ID, campaign, merchant,date.
我需要知道哪些行是重复的,这意味着,哪些行与同一个商家有相同的活动,例如:
ID, campaign, merchant, date
1, "hello", 260, 01/01/21
2, "hello", 260, 01/01/21
我可以这样做:
select campaign, merchant, count(*)
from public.my_table
group by campaign, merchant
HAVING count(*) > 1
没关系,但我还没有找到使用最后一个查询将这些重复的“活动”更改为“你好日/月/年时:分:秒”的方法。
所以我想要改变重复的活动(对于同一个商家),如下所示:
ID, campaign, merchant, date
1, "hello 01/01/2021 02:22:22", 260
2, "hello 01/01/2021 02:22:32", 260
已经几个小时了,但还没有运气,谢谢!
解决方案
我想我在几分钟后找到了解决方案,我写了这篇文章:
UPDATE public.my_table
SET campaign = campaign || date
where id in (
SELECT id FROM
(SELECT *, count(*)
OVER
(PARTITION BY
campaign,
merchant
) AS count
FROM public.my_table) tableWithCount
WHERE tableWithCount.count > 1
)
推荐阅读
- javascript - 谷歌分析 gtag 事件不起作用
- regex - 正则表达式仅用替换文件中的单词替换单词
- angular - Angular - 数据表默认内容
- html - 两个相邻的 div,堆叠响应变化
- list - 如何在一个由分隔符分隔的下拉列表中显示两个列表(第一个列表是 sugested 项目,然后是分隔符,然后是默认项目)?
- c# - 使用本地系统帐户运行时,GetAccessControl 方法失败,出现意外错误代码 3
- python - 删除 csv 文件的第二行并使用 Python 修改列
- django - 如何正确地对 Django 中间件进行单元测试
- javascript - 将未压缩的 scss 或 css 导入 js 文件时出现空样式标签
- javascript - 从 html 字符串获取列值 - Javascript