SQL Case when 的使用方法

2021-06-27 10:13:46 字數 1685 閱讀 1980

merge關鍵字是乙個神奇的dml關鍵字。它在sql server 2008被引入,它能將insert,update,delete簡單的並為一句。msdn對於merge的解釋非常的短小精悍:」根據與源表聯接的結果,對目標表執行插入、更新或刪除操作。例如,根據在另乙個表中找到的差異在乙個表中插入、更新或刪除行,可以對兩個表進行同步。」,通過這個描述,我們可以看出merge是關於對於兩個表之間的資料進行操作的。

可以想象出,需要使用merge的場景比如:

首先是更加短小精悍的語句,在sql server 2008之前沒有merge的時代,基於源表對目標表進行操作需要分別寫好幾條insert,update,delete。而使用merge,僅僅需要使用一條語句就好。下面我們來看乙個例子。

首先建立源表和目標表,並插入相關的資料,如圖1所示。

圖1.建立測試表並插入測試資料

下面我們來寫乙個簡單的merge語句,如圖2所示。

圖2.乙個簡單的merge語句

所造成的結果如圖3所示。

圖3.merge語句對於目標表的更新

最終目標表的結果如圖4所示。

圖4.最後目標表的結果

merge語句還有乙個強大的功能是通過output子句,可以將剛剛做過變動的資料進行輸出。我們在上面的merge語句後加入output子句,如圖5所示。

圖5.merge語句後加上output子句

此時merge操作完成後,將所變動的語句進行輸出,如圖6所示。

圖6.輸出merge操作產生的資料變更

當然了,上面的merge關鍵字後面使用了多個when…then語句,而這個語句是可選的.也可以僅僅新增或是僅僅刪除,如圖7所示。

圖7.僅僅插入的merge語句

我們還可以使用top關鍵字限制目標表被操作的行,如圖8所示。在圖2的語句基礎上加上了top關鍵字,我們看到只有兩行被更新。

圖8.使用top關鍵字的merge語句

但僅僅是matched這種限制條件往往不能滿足實際需求,我們可以在圖7那個語句的基礎上加上and附加上額外的限制條件,如圖9所示。

圖9.加上了and限制條件的merge語句

SQL Case when 的使用方法

摘自 case具有兩種格式。簡單case函式和case搜尋函式。簡單case函式 case when 1 then 男 when 2 then 女 else 其他 end case搜尋函式 case when 1 then 男 when 2 then 女 else 其他 end 這兩種方式,可以實現...

SQL Case when 的使用方法

case具有兩種格式。簡單case函式和case搜尋函式。簡單case函式 case when 1 then 男 when 2 then 女 else 其他 end case搜尋函式 case when 1 then 男 when 2 then 女 else 其他 end 這兩種方式,可以實現相同的...

SQL Case when 的使用方法

分類 sql case具有兩種格式。簡單case函式和case搜尋函式。簡單case函式 case when 1 then 男 when 2 then 女 else 其他 end case搜尋函式 case when 1 then 男 when 2 then 女 else 其他 end 這兩種方式,...