Oracle9i引入了一個(gè)新的SQL語句,使用本語句可以在一條語句中連接兩個(gè)表。 以前要使用UPDATE去更新兩個(gè)表中都存在的記錄,或者用INSERT添加兩個(gè)合并表中不存在的記錄,必須寫兩個(gè)SQL語句, 而現(xiàn)在這兩種操作都只要一條SQL MERGE語句就可以實(shí)現(xiàn)。
執(zhí)行的結(jié)果是shipment數(shù)據(jù)已經(jīng)被合并到inventory中,所以與inventory中某些東西相匹配的shipment都會(huì)被添加到count中, 而沒有得到的匹配的就不會(huì)添加到inventory中。
在MERGE語句中必須指定一個(gè)WHEN MATCHED和一個(gè)WHEN NOT MATHCED語句。 如果除這兩種情況之外還有別的情況,你可能就需要使用一個(gè)常規(guī)的INSERT或者UPDATE語句。
另外一點(diǎn)是MERGE語句一次只能修改一行記錄,而且不能修改在ON子句中引用的列。
MERGE語句的目標(biāo)表(target table)(在本例中是inventory)必須是一個(gè)可以使用INSERT語句進(jìn)行插入或者UPDATE語句進(jìn)行更新的表或者視圖。 源表(source table)(在本例中是shipment)可以是任何的查詢表,比如說外部表或者管道化表函數(shù)。