MySQL:每隔两行更新一次字符串
Posted
技术标签:
【中文标题】MySQL:每隔两行更新一次字符串【英文标题】:MySQL: Update every second row string 【发布时间】:2013-09-23 21:15:46 【问题描述】:我需要能够更新image
列中的每个even
(2、4、6 等)行字符串...名称将以扩展名.png
结尾,我想插入一些.jpg
之前的文字
所以从MyImage.png
到MyImage-Small.png
然后我需要能够为每个 odd
(1、3、5 等)行做同样的事情
【问题讨论】:
只是不是我以前做过的确切查询……伙计,不必对此大惊小怪。你花时间写评论的事实说明了你的一些事情。要么帮忙,要么远足。 如何区分“偶数”行和“奇数”行?表的名称是什么?列的名称是什么? (CREATE TABLE
可以。)
dev.mysql.com/doc/refman/5.7/en/… 你应该指定你如何知道它的偶数......还是就像替代行样式一样??
【参考方案1】:
假设表有一个数字主键列id
,您可以对偶数行执行此操作:
update mytable set picture = replace(picture, '.png', '-Small.png') where id % 2 = 0;
同样,对于奇数行,只需将谓词更改为 id % 2 = 1
【讨论】:
【参考方案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;
这个查询所做的只是为表生成序列,然后将其与原始表连接起来,以便我们分别更新奇数行和偶数行。
【讨论】:
以上是关于MySQL:每隔两行更新一次字符串的主要内容,如果未能解决你的问题,请参考以下文章