首页 > 解决方案 > 从两列上具有重复值的行中获取 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

已经几个小时了,但还没有运气,谢谢!

标签: sqlpostgresql

解决方案


我想我在几分钟后找到了解决方案,我写了这篇文章:

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
)

推荐阅读