我需要一个更新或创建数据库条目的SQL查询(如果某个客户尚不存在)。我在互联网上找到了当前的解决方案:
command.CommandText = "REPLACE INTO [Resource_Tracer].[dbo].[Customer](CustomerName, CustomerID) VALUES (@CustomerName, @CustomerID)"
由于我没有看到它经常使用,实际上从未听过它,这真的是我想要的解决方案,还是我应该手动完成?
答案 0 :(得分:5)
建议的REPLACE INTO
和ON DUPLICATE KEY
备选方案都是MySQL变体的非标准SQL。因此,您是否使用它取决于a)您是否使用MySQl和b)您是否想要与该变体绑定。
ANSI SQL定义了MERGE
语法,如果在您的平台上实现则更为标准
答案 1 :(得分:2)
使用
更常见INSERT INTO table col1) VALUES (1)
ON DUPLICATE KEY UPDATE col1=VALUES(Col1)
replace into
实际上会删除重复的条目并插入一个新条目。