MySQL:更新每隔一行字符串

时间:2013-09-18 22:54:07

标签: mysql sql database replace

我需要能够更新even列中的每个image(2,4,6等)行字符串...名称将以扩展名.png结尾我想在.jpg

之前插入一些文字

MyImage.pngMyImage-Small.png

然后我需要能够为每个odd(1,3,5等)行做同样的事情

2 个答案:

答案 0 :(得分:10)

假设该表具有数字主键列id,您可以对偶数行执行此操作:

update mytable set picture = replace(picture, '.png', '-Small.png') where id % 2 = 0;

类似地,只需将谓词更改为id % 2 = 1的奇数行

答案 1 :(得分:1)

如果表中没有连续序列的数字键,那么我们仍然可以通过使用以下更新来实现奇数行和偶数行的选择性更新。

UPDATE mytable o
INNER JOIN
    (SELECT id, @row :=@row +1,mod(@row,2) AS num
        FROM mytable, (SELECT @row := 0) r)AS t
    ON o.id = t.id -- any indexed field which is unique for the table
  SET o.image =
        CASE num 
            WHEN 0 THEN 'even_row'
            WHEN 1 THEN 'odd_row'
        END;

所有这些查询正在生成表的序列,然后将其与原始表连接,因此我们分别更新奇数行和偶数行。