5

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

所以从MyImage.pngMyImage-Small.png

然后我需要能够对每一odd行(1、3、5等)做同样的事情

4

2 回答 2

11

假设表有一个数字主键 column id,您可以对偶数行执行此操作:

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

同样,只需将谓词更改id % 2 = 1为奇数行

于 2013-09-18T23:21:33.293 回答
2

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

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;

这个查询所做的只是为表生成序列,然后将其与原始表连接,因此我们分别更新奇数行和偶数行。

于 2013-09-19T10:16:13.570 回答