MySQL:每隔两行更新一次字符串

Posted

技术标签:

【中文标题】MySQL:每隔两行更新一次字符串【英文标题】:MySQL: Update every second row string 【发布时间】:2013-09-23 21:15:46 【问题描述】:

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

所以从MyImage.pngMyImage-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:每隔两行更新一次字符串的主要内容,如果未能解决你的问题,请参考以下文章

MySQL每隔两列获取前3行

怎么样写一个脚本去实现总是每隔一定时间去点击网页上的某个表单控件

前端框架千千万,每隔两年翻一番

django crontab 定时任务

qt中如何实现多线程?

qt中如何实现多线程?