mysql中的merge into,SQL Server 2008中利用merge into关键实现insert/update自动匹配(类似于MySQL中的For Update关键字)...
SQL Server 2008中利用merge into關鍵實現insert/update自動匹配(類似于MySQL中的For Update關鍵字)
語法請參考:
按照語法編寫語句
DECLARE @OpenID VARCHAR(150);
SET @OpenID = '5';
MERGE INTO wx AS T
USING (SELECT [User_ID] FROM wx WHERE OpenId = @OpenId) AS S ON T.[User_ID]=S.[User_ID]
WHEN MATCHED THEN
UPDATE SET T.Invalid = 0, T.Updater = 1, T.UpdateTime = GETDATE()
WHEN NOT MATCHED THEN
INSERT (OpenId, Creator, CreateTime, Invalid) VALUES(@OpenID, 1, GETDATE(), 0);
發現添加語句不起作用
仔細看了語句,再逐行分析,突然想起來NOT MATCHED后面其實是省略了一個關鍵字BY TARGET的
意思是:TARGET中沒有,而SOURCE中有的話,向TARGET表中添加一條數據
但其實在上例中,要添加數據時,openid是不存在的
調整語句,執行成功,問題解決:
DECLARE @OpenID VARCHAR(150);
SET @OpenID = '5';
MERGE INTO wx_User AS T
USING (SELECT @OpenID) AS S(OpenId) ON T.[OpenId] = S.[OpenId]
WHEN MATCHED THEN
UPDATE SET T.Invalid = 0, T.Updater = 1, T.UpdateTime = GETDATE()
WHEN NOT MATCHED THEN
INSERT (OpenId, Creator, CreateTime, Invalid) VALUES(@OpenID, 1, GETDATE(), 0);
總結
以上是生活随笔為你收集整理的mysql中的merge into,SQL Server 2008中利用merge into关键实现insert/update自动匹配(类似于MySQL中的For Update关键字)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 高级语法,SQL 语法高级
- 下一篇: php amp ldquo 转换,php