深入SQL之merge into
===========================================================
深入SQL之merge into
===========================================================
在SQL語句中使用merge來實現插入與更新的合併操作,針對於從一個表插入或更新到另一個表有用
-- merge 用法
merge into sess_stats
using
(
select a.name, b.value
from v$statname a, v$sesstat b
where a.statistic# = b.statistic#
and b.sid = :sid
and (a.name like '%ga %'
or a.name like '%direct temp%')
) curr_stats
on (sess_stats.name = curr_stats.name)
when matched then
update set diff = curr_stats.value - sess_stats.value,
value = curr_stats.value
when not matched then
insert ( name, value, diff )
values
( curr_stats.name, curr_stats.value, null )
/
-- merge 用法
merge into sess_stats
using
(
select a.name, b.value
from v$statname a, v$sesstat b
where a.statistic# = b.statistic#
and b.sid = :sid
and (a.name like '%ga %'
or a.name like '%direct temp%')
) curr_stats
on (sess_stats.name = curr_stats.name)
when matched then
update set diff = curr_stats.value - sess_stats.value,
value = curr_stats.value
when not matched then
insert ( name, value, diff )
values
( curr_stats.name, curr_stats.value, null )
/
如果sess_stats、 curr_stats都是組合主鍵,即還有一個欄位add也是主鍵之一,那麼如下語句又該如何編寫呢?
on (sess_stats.name = curr_stats.name)
試圖改成:
on (sess_stats.name = curr_stats.name,sess_stats.add = curr_stats.add)
on (sess_stats.name = curr_stats.name and sess_stats.add = curr_stats.add)
lhpgh 評論於:2008.02.29 17:07
引文來源 王旺的書房 | 深入SQL之merge into
Link URL: http://wworacle.blog.163.com/blog/static/21268725200849114913369
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271063/viewspace-263461/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL入門之10 MERGESQL
- sql merge intoSQL
- 【sql調優之執行計劃】merge semi join and merge anti joinSQL
- SQL之19深入group bySQL
- SQL之18深入group bySQL
- SQL之17深入group bySQL
- 深入SQL之 insert allSQL
- 【sql調優之執行計劃】merge sort joinSQL
- SQL Server之深入理解STUFFSQLServer
- SQL中Merge的用法SQL
- sql server merge 的用法SQLServer
- 【sql調優之執行計劃】merge join cartesian and buffer sortSQL
- sql server merge 做insert和updateSQLServer
- 使用SQL MERGE語句組合表SQL
- SQL Server中的Merge關鍵字SQLServer
- merge sql error, dbType sqlserver, druid1.1.10, sql : nullSQLErrorServerUINull
- Transformation之simple view merge 【三】ORMView
- SQL Server 2008 MERGE語法SQLServer
- oracle之merge語法(轉載)Oracle
- Python資料分析之merge使用Python
- Transformation之CVM (complex view merge)【四】ORMView
- 【MySQL】效能優化之 index merge (1)MySql優化Index
- ORACLE sql merge into update where條件位置與效能消耗OracleSQL
- SQL Server 2008 優化MERGE語句效能SQLServer優化
- SQL Server 2008中的新語句:MERGESQLServer
- 深入淺出資料倉儲中SQL效能優化之Hive篇SQL優化Hive
- Java 8 中 Map 騷操作之 merge() 的用法Java
- 排序演算法之「歸併排序(Merge Sort)」排序演算法
- MySQL 優化之 index_merge (索引合併)MySql優化Index索引
- 佈局優化之ViewStub、Include、merge使用分析優化View
- SQL Server的Merge —— 一步實現 insert,update,deleteSQLServerdelete
- 深入解析:由SQL解析失敗看開發與DBA的效能之爭SQL
- 帶你深入瞭解SQL Server 2008的獨到之處SQLServer
- 深入詳解SQL中的NullSQLNull
- mysql實現merge功能之DUPLICATE key UPDATE語法MySql
- 大表範圍掃描走SORT MERGE JOIN的SQL優化SQL優化
- 【SQL Server學習筆記】Delete 語句、Output 子句、Merge語句SQLServer筆記delete
- mysql mergeMySql