【问题标题】:How to update a MySQL table column without erasing the existing data如何在不删除现有数据的情况下更新 MySQL 表列
【发布时间】:2014-03-13 02:02:44
【问题描述】:

我有一个表 ticket,其中有一列 comments。我想要一个 MySQL 查询,我可以在其中将值添加到 cmets 中,而不会删除以前存储的数据。此外,新数据应添加到新行中。

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

我使用了以下查询。它可以工作,但在这里它以abc;def 的身份访问数据库

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

这里ticket_id是一个主键。

【问题讨论】:

  • 我尝试了您的代码,但在旧文本和新添加的文本之间没有得到;。您的代码是在您运行时完全复制的吗?

标签: mysql


【解决方案1】:

我假设您想输入一个新行或一个回车符和一个换行符组合作为分隔符。

只是一个换行符

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;

【讨论】:

  • 这工作正常。谢谢您的帮助。这个查询确实使值在数据库的新行中输入。但是当我从数据库中检索数据时,整个内容都以段落的形式显示。有什么办法可以编写一个选择查询,从数据库中检索不同行中的数据?
  • @user3411959 - Being displayed as a paragraph - 你的意思是通过 HTML 吗?您可以在字符串前面加上 '

    ' 并在后面加上 '

    '。然后将每个 CHAR(10) 替换为 '

    '

  • 我正在使用查询“select cmets from ticket where ticket_id=235”并将结果获取到变量中。然后我使用 document.getelementbyID('test').innerHTML=variable 函数来获取 id 中的数据。在此之后,我将通过

    显示数据。你能告诉我在哪里可以进行前置和追加操作吗?
  • @Durbar - 尝试将您的 SQL 更改为 SELECT CONCAT('<p>',REPLACE(comments, CHAR(10), '</p><p>'),'</p>') ...
【解决方案2】:
u can try this  
  UPDATE ticket
    SET comments  = CONCAT(COALESCE(comments),CHAR(13), CHAR(10),'def')
    WHERE ticket_id = 235;

【讨论】:

    【解决方案3】:

    老实说,我建议将 cmets 放在一个单独的表中,您可以将其加入到票证本身。

    话虽如此,您当前的方法应该可行,尽管我会像这样进行连接:

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

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

    【讨论】:

      猜你喜欢
      • 2015-01-13
      • 2011-11-20
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 2016-01-27
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多