国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

合并數據

2024-07-21 02:48:52
字體:
來源:轉載
供稿:網友
合并數據

  在實際項目開發過程中,經常有合并數據的需求。這里合并數據的意思是,對于源表A,目標表B,如果A中存在B中不存在則插入記錄,如果A中存在B中也存在則更新記錄,如果A中不存在B中存在則刪除記錄。

  為了實現這一需求,我們有兩種解決方案,一是傳統的處理方法,即使用EXISTS謂詞,更新和新增分開處理的方式。另一種是使用MERGE語句(SQL Server 2008中新增的功能)。為了演示這一功能,首先我們需要準備測試數據,我們在tempdb臨時數據庫中新建兩個表,源表Customers和目標表Customersstage,然后向這兩個表中插入測試數據,如下代碼。

USE tempdb;GO-- 合并數據-- 對于源表A,目標表B,如果A中存在B中不存在則插入記錄,如果A中存在B中也存在則更新記錄,如果A中不存在B中存在則刪除記錄。-- 準備測試數據IF OBJECT_ID('dbo.Customers','U') IS NOT NULL DROP TABLE dbo.Customers;GOCREATE TABLE dbo.Customers(    custid INT NOT NULL,    companyname NVARCHAR(30) NOT NULL,    phone VARCHAR(30) NOT NULL,    ADDRESS NVARCHAR(50) NOT NULL,    CONSTRAINT PK_Customers PRIMARY KEY(custid)        );INSERT INTO dbo.Customers        ( custid, companyname, phone, ADDRESS )VALUES  (1,N'cust 1','(111)111-111',N'address 1'),        (2,N'cust 2','(222)222-222',N'address 2'),        (3,N'cust 3','(333)333-333',N'address 3'),        (4,N'cust 4','(444)444-444',N'address 4'),        (5,N'cust 5','(555)555-555',N'address 5');        IF OBJECT_ID('dbo.CustomersStage','U') IS NOT NULL DROP TABLE dbo.CustomersStage;GOCREATE TABLE dbo.CustomersStage(    custid INT NOT NULL,    companyname NVARCHAR(30) NOT NULL,    phone VARCHAR(30) NOT NULL,    ADDRESS NVARCHAR(50) NOT NULL,    CONSTRAINT PK_CustomersStage PRIMARY KEY(custid)    );INSERT INTO dbo.CustomersStage        ( custid, companyname, phone, ADDRESS )VALUES  (2,N'AAAAA','(222)222-222',N'address 2'),        (3,N'cust 3','(333)333-333',N'address 3'),        (5,N'BBBBB','CCCCC',N'DDDDD'),        (6,N'cust 6(new)','(666)666-666',N'address 6'),        (7,N'cust 7(new)','(777)777-777',N'address 7');

運行以下代碼查看示例數據效果。

SELECT * FROM dbo.Customers;SELECT * FROM dbo.CustomersStage;

查詢結果如下。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜黄县| 平昌县| 成都市| 凤冈县| 扬中市| 托克逊县| 含山县| 大新县| 淮滨县| 长武县| 藁城市| 遂溪县| 重庆市| 民乐县| 周至县| 襄垣县| 靖远县| 芷江| 湘潭县| 灵石县| 赣州市| 锡林浩特市| 辰溪县| 柏乡县| 嵊泗县| 宜宾市| 彰化县| 海林市| 罗平县| 若羌县| 中超| 华宁县| 江西省| 建宁县| 奉新县| 伊宁市| 布尔津县| 郁南县| 乌拉特中旗| 三台县| 英超|