如何更新MySQL表列而不删除现有数据

时间:2014-03-12 17:43:20

标签: mysql

我有一个表ticket,其中包含comments列。我想要一个MySQL查询,我可以在不删除以前存储的数据的情况下将值添加到注释中。此外,新数据应添加到新行中。

例如,如果coloumns表的当前内容为abc且新数据为def,则应将数据库更新为def(在第1行)和abc(在第二行)

我使用了以下查询。它有效但在这里它以abc;def

命中数据库
UPDATE ticket 
SET comments = concat( coalesce( comments ) , 'def' ) 
WHERE ticket_id =235;

此处ticket_id是主键。

3 个答案:

答案 0 :(得分:0)

我假设您要将新行或回车符和换行符组合作为分隔符。

只是换行符

UPDATE ticket
SET comments  = CONCAT('def', COALESCE(CONCAT(CHAR(10),comments),''))
WHERE ticket = 25;

或者是CRLF:

UPDATE ticket
SET comments  = CONCAT('def', COALESCE(CONCAT(CHAR(13),CHAR(10),comments),''))
WHERE ticket = 25;

答案 1 :(得分:0)

u can try this  
  UPDATE ticket
    SET comments  = CONCAT(COALESCE(comments),CHAR(13), CHAR(10),'def')
    WHERE ticket_id = 235;

答案 2 :(得分:0)

我诚实地建议在单独的表格中对票证进行评论,您可以加入票证本身。

话虽如此,你当前的方法应该有效,不过我会像这样连接:

UPDATE ticket 
SET comments = concat(COALESCE(comments,''), 'def' ) 
WHERE ticket_id = 235;

我不知道你的例子中的分号来自哪里,除非它是每个现有的字段值。这里唯一的变化是使用空字符串COALESCE当前字段值来处理当前值为null的情况。将COALESCE与单个参数一起使用基本没有意义(除非在GROUP BY查询中的COALESCE / SELECT上下文中)。