SQL2008中的MERGE使用心得

2021-05-23 13:38:52 字數 528 閱讀 7129

msdn:

一、merge 語句最多可以有兩個 when matched 子句。如果指定了兩個子句,則第乙個子句必須同時帶有乙個 and 子句。對於任何給定的行,只有在未應用第乙個 when matched 子句的情況下,才會應用第二個 when matched 子句。如果有兩個 when matched 子句,那麼其中的乙個必須指定 update 操作,而另乙個必須指定 delete 操作。如果在 子句中指定了 update,並且根據 ,中的多個行與 target_table 中的某一行匹配,則 sql server 將返回錯誤。merge 語句無法多次更新同一行,也無法更新和刪除同一行。

二、自己的理解:根據,在中對應有多條的記錄,而在中只有一條,那麼將會報錯:

merge 語句試圖多次更新或刪除同一行。目標行與多個源行匹配時會出現這種情況。merge 語句無法多次更新/刪除目標表的同一行。請簡化 on 子句,以確保目標行最多與乙個源行匹配,也可以使用 group by 子句對源行分組。

所以除了上面的那種情況下,其他情況都是正確的。

下面是sql語句:

SQL2008中Merge的用法

在sql2008中,新增了乙個關鍵字 merge,這個和oracle的merge的用法差不多,只是新增了乙個delete方法而已。下面就是具體的使用說明 首先是對merge的使用說明 merge into 目標表 using 源on條件 when matched 操作 when notmatched...

SQL2008中Merge的用法

在sql2008中,新增了乙個關鍵字 merge,這個和oracle的merge的用法差不多,只是新增了乙個delete方法而已。下面就是具體的使用說明 首先是對merge的使用說明 merge into 目標表 using 源on條件 when matched 操作 when notmatched...

SQL2008中Merge的用法

在sql2008中,新增了乙個關鍵字 merge,這個和oracle的merge的用法差不多,只是新增了乙個delete方法而已。下面就是具體的使用說明 首先是對merge的使用說明 merge into 目標表 using 源on條件 when matched 操作 when notmatched...