【问题标题】:How to update a row without delete current value in mysql?如何更新一行而不删除mysql中的当前值?
【发布时间】:2014-02-05 13:40:51
【问题描述】:

我的一个表有一个字段 tags 和字段的值,如 {2,3,8}

tag_id  | r_tags  
--------|------------   
1       | {2,3,8}  
--------|------------  
2       | {5,8}

我想更新字段而不删除当前值。例如。如果我需要为标签 ID 1 添加 5,那么 {2,3,8} 应该类似于 {2,3,8,5}

现在它像

 1. Select the current value.
 2. Add 5 using php and created new string.
 3. Update the row.

我只想知道只能通过MySql吗?

【问题讨论】:

  • 谷歌搜索“多对多”
  • 你是如何插入这个值的。你能分享那个代码吗?
  • 可以使用 MySQL CONCAT()
  • @Jenz 现在我使用 PHP 创建字符串,然后使用简单的更新查询更新值,例如更新表集 r_tags='{2,3,8,5}' where tag_id='1'。
  • 更新 your_table SET your_field = REPLACE(your_field, '}', concat(',', new_value, '}') WHERE your_field = ?

标签: php mysql sql optimization sql-update


【解决方案1】:

这应该有效 - 假设您想在tag_id = 1 中的r_tags 中添加 5,这应该是查询 -

UPDATE tags SET r_tags = CONCAT(SUBSTRING(r_tags, 1, CHAR_LENGTH(r_tags) - 1),',5','}') WHERE tag_id = 1;

在php中,

// $new_val and $tag_id as variables.
$query = "UPDATE tags SET r_tags = CONCAT(SUBSTRING(r_tags, 1, CHAR_LENGTH(r_tags) - 1),',$new_val','}') WHERE tag_id = $tag_id"

【讨论】:

    【解决方案2】:
    UPDATE your_table SET your_field = REPLACE(your_field, '}', concat(',', new_value, '}') WHERE your_field = ?
    

    【讨论】:

      【解决方案3】:

      您可以尝试以下查询 Mysql,您可以将任何值替换为“5”,无论您想添加什么。

      Update tbl_tags SET r_tags = INSERT(r_tags, INSTR(r_tags, '}'), 1, CONCAT(',','5','}')) WHERE tag_id = '1'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-13
        • 2014-11-06
        • 1970-01-01
        • 2019-11-10
        相关资源
        最近更新 更多