程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SQL中Merge用法詳解

SQL中Merge用法詳解

編輯:MSSQL

SQL中Merge用法詳解。本站提示廣大學習愛好者:(SQL中Merge用法詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL中Merge用法詳解正文


MERGE語句是SQL語句的一種。在SQL Server、Oracle數據庫中可用,MySQL、PostgreSQL中弗成用。MERGE是Oracle9i新增的語法,用來歸並UPDATE和INSERT語句。經由過程MERGE語句,依據一張表(原數據表,source table)或子查詢的銜接前提對別的一張(目的表,target table)表停止查詢,銜接前提婚配上的停止UPDATE,沒法婚配的履行INSERT。這個語法僅須要一次全表掃描就完成了全體任務,履行效力要高於INSERT+UPDATE。

merge重要用於兩表之間的聯系關系操作

oracle中 merge:

從oracle 9i開端支撐merge用法,10g有了完美

create table a (id_ integer,count_ integer);
insert into a values(1,3);
insert into a values(3,6);
create table b (id_ integer,count_ integer);
insert into b values(1,7);
insert into b values(2,4);
MERGE INTO a
 USING b
 ON (a.id_ = b.id_)
WHEN MATCHED THEN
 UPDATE SET count_ = b.count_+a.count_ /* 留意指名count_屬於的表 */
WHEN NOT MATCHED THEN
 INSERT VALUES (b.id_,b.count_);
commit;
select * from a;

成果:

    id_   count_
    1        10
    3          6
    2          4

SQL Server 2008開端支撐merge:

有兩張構造分歧的表:test1,test2

create table test1 
(id int,name varchar(20)) 
go 
create table test2 
(id int,name varchar(20)) 
go 
insert into test1(id,name) 
values(1,'boyi55'),(2,'51cto'),(3,'bbs'),(4,'fengjicai'),(5,'alis') 
insert into test2(id,name) 
values(1,'boyi'),(2,'51cto')

將test1同步到test2中,沒有的數據停止拔出,已稀有據停止更新

merge test2 t --要更新的目的表 
using test1 s --源表 
on t.id=s.id --更新前提(即主鍵) 
when matched --假如主鍵婚配,更新 
then update set t.name=s.name 
when not matched then insert values(id,name);--目的主未知主鍵,拔出。此語句必需以分號停止

運轉以下查詢檢查更新成果

select a.id,a.name as name_1,b.name as name_2 from test1 as a,test2 as b 
where a.id=b.id

id          name_1               name_2
----------- -------------------- --------------------
1           boyi55               boyi55
2           51cto                51cto
3           bbs                  bbs
4           fengjicai            fengjicai
5           alis                 alis

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved