使用SQL MERGE語句組合表
create table inventory (part_nointeger,part_count integer);
insert into inventory values(1,5);
insert into inventory values(3,6);
create table shipment (part_nointeger,part_count integer);
insert into shipment values(1,2);
insert into shipment values(2,2);
MERGE INTO inventory
USING shipment
ON (inventory.part_no = shipment.part_no)
WHEN MATCHED THEN
UPDATE SET part_count = part_count + shipment.part_count
WHEN NOT MATCHED THEN
INSERT VALUES (shipment.part_no,shipment.part_count);
commit;
select * from inventory;
PART_NO PART_COUNT
---------- ----------
1 4
3 6
2 2
執行的結果是shipment資料已經被合併到inventory中,所以與inventory中某些東西相匹配的shipment都會被新增到count中,而沒有得到的匹配的就不會新增到inventory中。
在MERGE語句中必須指定一個WHEN MATCHED和一個WHEN NOT MATHCED語句。如果除這兩種情況之外還有別的情況,你可能就需要使用一個常規的INSERT或者UPDATE語句。
另外一點是MERGE語句一次只能修改一行記錄,而且不能修改在ON子句中引用的列。
MERGE語句的目標表(target table)(在本例中是inventory)必須是一個可以使用INSERT語句進行插入或者UPDATE語句進行更新的表或者檢視。源表(source table)(在本例中是shipment)可以是任何的查詢表,比如說外部表或者管道化表函式。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-515897/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle中merge 語句使用Oracle
- 【SQL Server學習筆記】Delete 語句、Output 子句、Merge語句SQLServer筆記delete
- Sql建表語句SQL
- sql 建表語句SQL
- sql語句建立表SQL
- 使用SQL語句將資料庫中的兩個表合併成一張表SQL資料庫
- sql語句之分組,聚合函式SQL函式
- 用一條SQL語句顯示所有可能的比賽組合SQL
- SQL Server 2008 優化MERGE語句效能SQLServer優化
- SQL Server 2008中的新語句:MERGESQLServer
- SQL 兩個表組合查詢SQL
- 使用SQL語句獲取SQLite中的表定義SQLite
- sql 中的with 語句使用SQL
- SQL語句查詢表結構SQL
- mysql 查詢建表語句sqlMySql
- SQL語句圖表生成工具ChartSQLSQL
- 【PL/SQL】使用變數傳遞方法生成表更名的SQL語句SQL變數
- 【SQLLDR】使用SQL*Loader輔助生成外部表建立語句SQL
- sql分組查詢語句--行內分組(非聚合分組)SQL
- SQL聯合語句的視覺解釋SQL視覺
- 使用sql語句分析雙色球SQL
- SQL語句使用總結(一)SQL
- SQL查詢語句使用 (轉)SQL
- 使用mysqlsniffer捕獲SQL語句MySql
- 統計報表 -- sql統計語句SQL
- 定時生成分月表sql語句SQL
- SQL單表查詢語句總結SQL
- sql語句實現表的行列倒置SQL
- Oracle如何複製表的sql語句OracleSQL
- Oracle表部分資料提取SQL語句OracleSQL
- 兩表聯查修改的sql語句SQL
- Pandas 基礎 (9) - 組合方法 merge
- MERGE語句語法檢查不嚴格
- OCP課程11:SQL之使用DDL語句建立和管理表SQL
- SQL語句SQL
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL
- 透過sql語句建立表時指定表空間的語法SQL
- 使用hint來調優sql語句SQL