MySQL 查询:更新和/或追加
Posted
技术标签:
【中文标题】MySQL 查询:更新和/或追加【英文标题】:MySQL Query: UPDATE and/or APPEND 【发布时间】: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)
提前谢谢你。
【问题讨论】:
你所谓的追加也是更新。但是,在将分隔的值列表存储在单个字段值中之前,您确实应该三思而后行。请参阅***.com/questions/3653462/… 了解为什么这不是一个好主意的详细信息 【参考方案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)
)
【讨论】:
感谢您的帮助,这很好,很清楚。我运行了它,但“计数器”字段出现模棱两可的错误。以上是关于MySQL 查询:更新和/或追加的主要内容,如果未能解决你的问题,请参考以下文章
C 语言文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )
C 语言文件操作 ( 配置文件读写 | 写出或更新配置文件 | 追加键值对数据 | 更新键值对数据 )
如果 COUNT = 0 [重复],如何在 mySQL 中插入或更新查询