0

以下查询将通过我的表并将一个数值附加到我的列之一。这个数值每行都会增加 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;
4

0 回答 0