我有一个表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
是主键。
答案 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
上下文中)。