【发布时间】:2017-12-14 17:12:41
【问题描述】:
我需要更改包含 dates 和 amounts 的 SQL 表的日期列,例如20170101 到 20170102。但是,新日期20170102 可能已经存在。这会导致重复键错误,因为日期列是唯一索引的一部分。
我的第一个想法是使用 INSERT ON DUPLICATE KEY:
INSERT INTO table (Date, Amount)
SELECT '20170102', Amount
FROM table
WHERE Date = '20170101'
ON DUPLICATE KEY UPDATE Amount = OldAmount + NewAmount
Amount = OldAmount + NewAmount 部分显然无法工作。但是我该如何解决我的问题呢?
【问题讨论】:
-
mysql和tsql标签通常是不兼容的。请使用适当的软件(MySQL、Oracle、DB2...)和版本标记您的问题,例如sql-server-2014。语法和功能的差异通常会影响答案。请注意,tsql缩小了选择范围,但没有指定数据库。 -
this 问题有帮助吗?
-
合并命令应该可以让你到达那里
标签: tsql insert sql-update sql-server-2014 on-duplicate-key