MYSQL - 在没有select的情况下更新表中的文本值,使用case(在一个查询中更新)

时间:2012-03-04 13:06:47

标签: mysql

我遇到了在主题中命名的问题。 我试图在一个查询中更新表中的多行,具体取决于行的特定ID。我想要更新的不幸行是文本类型的数据(数字数据很容易)。这是我的问题:

UPDATE table SET column = CASE
WHEN id = 2 THEN column = column + ', 100'
WHEN id = 3 THEN column = column + ', 10'
[...]
ELSE column
END;

列中的数据从php内爆,所以它看起来像:

id | column
------------
 2 | 5, 6, 20
 3 | 7, 12, 200

执行查询后,我希望:

id | column
------------
 2 | 5, 6, 20, 100
 3 | 7, 12, 200, 10

如何将这些值添加到指定的行?现在它将id为2和3的'column'行更改为0(就像它是一个整数类型的值)。

我还想问你如何从列中删除特定值而不是添加它:

id | column
------------
 2 | 5, 7, 20
 3 | 7, 12, 200

我希望从两行中删除'7',ID为2和3,所以在查询后它看起来像这样:

id | column
------------
 2 | 5, 20
 3 | 12, 200

任何帮助将不胜感激 - 我坚持下去:/

1 个答案:

答案 0 :(得分:0)

对于插入:

UPDATE table 
   SET column = CASE
      WHEN id = 2 
      column =  CONCAT(column, ', 100') 
      WHEN id = 3 
      column =  CONCAT(column, ', 10') 
      ELSE 0
      END

对于删除,你可以像dis一样。对不起,我现在无法执行查询。没有经过测试!

UPDATE table 
   SET column = CASE
      WHEN id = 2 
      column = replace(column,', 7','')
      WHEN id = 3 
      column = replace(column,', 7','')
      ELSE 0
      END

用于更新:如果要将值更改为7到

    UPDATE table 
   SET column = CASE
      WHEN id = 2 
      column = replace(column,'7','14')
      WHEN id = 3 
      column = replace(column,'7','14')
      ELSE 0
      END