【问题标题】:MySQL: Update every second row stringMySQL:每隔两行更新一次字符串
【发布时间】: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/… 你应该指定你如何知道它的偶数......还是就像替代行样式一样??

标签: mysql sql database replace


【解决方案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;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      • 2020-03-14
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      相关资源
      最近更新 更多