我需要能够更新列even
中的每个(2、4、6 等)行字符串image
......名称将以扩展名结尾,.png
我想在.jpg
所以从MyImage.png
到MyImage-Small.png
然后我需要能够对每一odd
行(1、3、5等)做同样的事情
假设表有一个数字主键 column id
,您可以对偶数行执行此操作:
update mytable set picture = replace(picture, '.png', '-Small.png') where id % 2 = 0;
同样,只需将谓词更改id % 2 = 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;
这个查询所做的只是为表生成序列,然后将其与原始表连接,因此我们分别更新奇数行和偶数行。