mysql update only_Update only first record from duplicate entries in MySQL
I did this recently in PostgreSQL. Are you in a position to use a temporary table? If so, for each duplicate set, insert the MIN() primary key into your temp table, and then do your UPDATE using a where clause using the PKs in the temp table.
Edit: following your comment, here is something I did recently.
CREATE TEMPORARY TABLE misc_updates (
temp_oid INTEGER,
job INTEGER,
run CHARACTER VARYING(8),
quantity INTEGER
);
INSERT INTO misc_updates (temp_oid, job, run, quantity)
SELECT
MAX(runjob.oid) temp_oid, runjob.job, runjob.run, SUM(runjob.quantity) sum_quantity
FROM
runjob
INNER JOIN job ON (runjob.job = job.code)
INNER JOIN
(SELECT run, job FROM runjob GROUP BY run, job HAVING COUNT(*) > 1) my_inner
ON (runjob.run = my_inner.run AND runjob.job = my_inner.job)
GROUP BY
runjob.job, runjob.run, job.quantity
;
/* Do updates on one of the duplicated runjob rows */
UPDATE runjob
SET quantity = mu.quantity
FROM
misc_updates mu
WHERE
runjob.oid = mu.temp_oid;
You can swap 'oid' for your primary key (my problem was that the table had no primary key!). Also the critical thing is the where clause in the UPDATE, so only some rows are updated. You'll need to swap out MAX() for MIN(), and of course change the rows to the ones in your use-case. Bear in mind that this is for PostgreSQL, but the approach should be much the same.
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)