在MySQL中,如果指定ON DUPLICATE KEY UPDATE并且插入的行会导致UNIQUE索引或PRIMARY KEY中出现重复值,则会对旧行执行UPDATE。例如,如果列a声明为UNIQUE并且包含值1,则以下两个语句具有相同的效果:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
UPDATE table SET c=c+1 WHERE a=1;
我不相信我在T-SQL中遇到过类似的东西。SQL Server提供了任何可以与MySQL的重复键更新相媲美的东西吗?
5条答案
按热度按时间vzgqcmou1#
令我惊讶的是,这个页面上的答案都不包含实际查询的示例,所以现在开始:
插入数据然后处理重复数据的更复杂示例
w46czmvw2#
没有等效的DUPLICATEKEYUPDATE,但是MERGE和WHENMATCHED可能对您有用
Inserting, Updating, and Deleting Data by Using MERGE
imzjd6km3#
你可以反过来试试。它或多或少都是一样的。
qq24tv8q4#
SQL Server 2008作为TSQL的一部分具有此功能。
请参见此处的MERGE语句文档-http://msdn.microsoft.com/en-us/library/bb510625.aspx
zbsbpyhn5#
SQL Server 2000以后有一个替代触发器的概念,它可以完成所需的功能-尽管会有一个讨厌的触发器隐藏在幕后。
检查“插入或更新?”部分
http://msdn.microsoft.com/en-us/library/aa224818(SQL.80).aspx