如何在没有WHERE的情况下修改MySQL查询?

时间:2013-06-06 19:30:05

标签: mysql

以下查询将遍历我的表,并将数值附加到我的一个列中。对于每一行,此数值将增加1,因此会产生jsmith, jsmith1, jsmith2, jsmith3之类的值。目前我必须使用诸如Where external_id = 'jsmith'之类的where子句来使用external_id jsmith更新所有人,但是我想避免将其放在哪里,因为可能有多个外部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;

0 个答案:

没有答案