2014-09-22 21 views
0

我有一張表,我用來存儲數據。當用戶單擊保存在我的客戶端系統上的網格上時,表格會填充。在這裏我做了一個非常簡單的例子。該表稱爲TableA。客戶端的屏幕顯示五行,所以當用戶點擊保存它被翻譯成五種刀片:如何根據另一個表中的數據更新基本SQL表中的數據?

CREATE TABLE [dbo].[TableA] 
(
    [IdA]  INT   IDENTITY (1, 1) NOT NULL, 
    [valueA] CHAR(10) NOT NULL 
) 
INSERT INTO TableA VALUES (1, 'one') 
INSERT INTO TableA VALUES (2, 'two') 
INSERT INTO TableA VALUES (3, 'three') 
INSERT INTO TableA VALUES (4, 'four') 
INSERT INTO TableA VALUES (5, 'five') 
GO 

現在我在客戶端上用戶更改數據在網格中,我讀出的最新數據到一個臨時表。在這裏,我模擬與表B

CREATE TABLE [dbo].[TableB] 
(
    [IdB]  INT   IDENTITY (1, 1) NOT NULL, 
    [valueB] CHAR(10) NOT NULL 
) 
INSERT INTO TableB VALUES (1, 'one') 
INSERT INTO TableB VALUES (3, 'newThree') 
INSERT INTO TableB VALUES (4, 'newFour') 
INSERT INTO TableB VALUES (5, 'five') 
GO 

可有人建議我如何使用新的數據表B中TableA中更新的行。在這種情況下我需要做的是刪除ID爲2的行,並更新ID爲4和5的行。每次可能不同。例如,用戶可能會添加行,所以我需要向TableA添加一個新行。請注意,所有這些都發生在存儲過程中。我真正需要的是對不同方式的建議,我可以通過不同的方式加入TableA和TableB,以創建一個插入,刪除和TableA更新以使其達到最新狀態。

請注意這個特別的例子就是我需要落得是:

+0

[中'UPDATE '部分已被詢問並在本網站上回答了很多很多次](http://stackoverflow.com/questions/1604091/update-a-table-using-join-in-sql-server/1604212#1604212) 。 – 2014-09-22 15:46:58

回答

1

與更新JOIN:

UPDATE TableA 
SET TableA.ValueB = TableB.ValuA 
FROM TableA 
JOIN TableB 
    ON TableA.IdB = TableB.IdA 

然後刪除多餘的行:

DELETE FROM TableA 
WHERE NOT EXISTS (SELECT 1 FROM TableB WHERE TableB.IdA = TableA.IdB) 
+0

但是我還需要處理TableB有更多行(在TableA上插入)和TableB有較少行(TableA上的刪除)的情況 – 2014-09-22 15:10:23

+0

添加了另一個語句來執行DELETE – DavidG 2014-09-22 15:12:01

相關問題