Postgres - 查找重复并将其中一行更新为零
Posted
技术标签:
【中文标题】Postgres - 查找重复并将其中一行更新为零【英文标题】:Postgres - Find duplicate and update one of the row to zero 【发布时间】:2018-11-08 23:47:35 【问题描述】:需要你的帮助,下面是我在 Postgres 中的表结构
Eid Teamid Working Days
1000067 166570 21
1000075 163138 21
1000086 163077 21
1000086 185102 21
记录 1000086 有两个团队,我必须将其中一个团队更新为 0 天。当这显示在 UI 中时,经理可以更新,但请您帮我提供一个更好的解决方案吗?
我正在尝试不同的查询,但发现它很棘手。
【问题讨论】:
您能发布一些您尝试过的查询吗? SELECT distinct a.employee_id , a.oracle_sub_team_code ,a.total_days FROM resourcetracker_totaldays a JOIN (SELECT employee_id, COUNT() FROM resourcetracker_totaldays GROUP BY employee_id HAVING count() > 1 ) b ON a.employee_id = b.employee_id where month_value = 'NOVEMBER' order by a.employee_id 我正在使用它来查找记录列表,但我无法将属于两个团队的行之一更新为 0 【参考方案1】:我认为这个解决方案有效,
更新 resourcetracker_totaldays 设置 total_days = 0 其中 id = 从中选择 id (SELECT id ,employee_id, total_days, oracle_sub_team_code, ROW_NUMBER() OVER (PARTITION BY employee_id) AS 排名 FROM resourcetracker_totaldays 其中 month_value = 'NOVEMBER' ) al 其中排名 > 1
我正在找到该表中该记录的第 2 次、第 3 次出现的排名,我正在获取排名 > 1 的记录并将所有这些 total_days 值更新为 0,这将包含表中的所有记录,但将只有一个团队有 total_days。
【讨论】:
以上是关于Postgres - 查找重复并将其中一行更新为零的主要内容,如果未能解决你的问题,请参考以下文章
使用 Activerecord、Rails 和 Postgres 查找具有多个重复字段的行
使用 jOOQ UPserting 到 Postgres 表时返回更新的行数
在 Node.js 中为 postgres 表中的每一行以不同的间隔为每一行运行重复任务