【问题标题】:MySQL Query: UPDATE and/or APPENDMySQL 查询:更新和/或追加
【发布时间】:2020-07-29 21:42:00
【问题描述】:

我有一个临时表,用于插入主数据库。

临时表名为“temp_table” 主表是“主”

我目前使用以下命令更新“master”

SELECT COUNT(*) FROM master;
SHOW COLUMNS FROM master;
INSERT INTO master
SELECT * FROM temp_table
ON DUPLICATE KEY UPDATE email = VALUES(email), phone = VALUES(phone)

现在,我希望能够将“临时表”中的字段(计数器)附加到“主表”中。该字段已存在于两个表中,我只想更新或附加它。

master 中的“counter”字段可能为空,也可能已经包含一个数值。

In cases where the value exists, it should append separated by a comma.  Format (88,89,90)
In cases where the it's empty, it should update (88)

提前谢谢你。

【问题讨论】:

  • 你所谓的追加也是更新。但是,在将分隔的值列表存储在单个字段值中之前,您确实应该三思而后行。请参阅stackoverflow.com/questions/3653462/… 了解为什么这不是一个好主意的详细信息

标签: mysql sql sql-update sql-insert


【解决方案1】:

我想你想要:

on duplicate key update 
    email = values(email), 
    phone = values(phone),
    counter = case when counter is null 
        then values(counter) 
        else concat(counter, ',', values(counter))
    end

您也可以使用coalesce() 来表达这一点,尽管这种表达方式可能更难理解:

on duplicate key update 
    email = values(email), 
    phone = values(phone),
    counter = concat(
        coalesce(concat(counter, ','), ''),
        values(counter)
    )

【讨论】:

  • 感谢您的帮助,这很好,很清楚。我运行了它,但“计数器”字段出现模棱两可的错误。
猜你喜欢
  • 1970-01-01
  • 2016-12-09
  • 2011-08-29
  • 2012-10-19
  • 1970-01-01
  • 2017-03-10
  • 1970-01-01
  • 2017-08-15
  • 2016-01-16
相关资源
最近更新 更多