2014-09-22 71 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

相关问题