我需要能够更新even
列中的每个image
(2,4,6等)行字符串...名称将以扩展名.png
结尾我想在.jpg
从MyImage.png
到MyImage-Small.png
然后我需要能够为每个odd
(1,3,5等)行做同样的事情
答案 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;
所有这些查询正在生成表的序列,然后将其与原始表连接,因此我们分别更新奇数行和偶数行。