以下查询将通过我的表并将一个数值附加到我的列之一。这个数值每行都会增加 1,所以它会产生类似jsmith, jsmith1, jsmith2, jsmith3
. 目前我必须放置一个 where 子句,例如Where external_id = 'jsmith'
使用 external_id jsmith 更新每个人,但我想避免放置 where 因为可能有多个外部 id,所以简而言之,当我运行此更新时,我想它产生类似的东西jsmith, jsmith1, jsmith2, brobert, brobert1, brobert2, pmorris, pmorris1, pmorris2, pmorris3
:
UPDATE ( SELECT t.id
, t.external_id
, CONCAT(t.external_id,case s.seq when 0 then '' else s.seq end) AS new_external_id
FROM ( SELECT @i := @i + 1 AS seq
, m.id
FROM Header m
JOIN (SELECT @i := -2) i
ORDER BY m.id
) s
JOIN Header t
ON t.id = s.id
WHERE t.external_id = 'jsmith' -- Exclude this
ORDER BY t.id
) r
JOIN Header u
ON u.id = r.id
SET u.external_id = r.new_external_id;