选择INTO表

时间:2015-09-01 10:10:26

标签: sql sql-server tsql

表A:

ServerName, InstanceName, GroupName, Value1 (Some servers have more than 1 instance, therefore some servers are listed more than once) (400 records)

表B:

ServerName, GroupName (100 records)

首先,我想将表B中的GroupNames插入到表A中,其中ServerName存在于表A中。然后我想删除表A中没有{{1}的所有服务器只有表A中的100条记录结束,并添加了GroupName

样本数据

表A:

GroupNames

表B:

ServerName      InstanceName     GroupName          Value1
----------------------------------------------------------
Server1         Instance 1        -                 500
Server1         Instance 2        -                 300
Server2         Instance 1        -                 400

由于每个表中的记录数不同,因此简单的ServerName GroupName ------------------------- Server1 Group1 Server2 Group2 不起作用。

2 个答案:

答案 0 :(得分:0)

首先,您应该从TableB更新TableA.GroupName。试着用这个:

update A
set    A.GroupName = B.GroupName
from   TableA TAB
       inner join TableB B on A.ServerName = B.ServerName
where  ISNULL(A.GroupName,'-') = '-';
GO

然后您可以删除所有没有GroupName

的记录
delete from TableA where ISNULL(GroupName,'-') = '-';
GO

答案 1 :(得分:0)

更新查询在上一个答案中没问题,但删除一次可以进行更多修改。

UPDATE TA
SET    TA.GroupName = TB.GroupName
FROM   TableA TA
       INNER JOIN TableB TB ON TA.ServerName = TB.ServerName

DELETE TA
FROM   TableA TA
WHERE TA.ServerName NOT IN(SELECT ServerName FROM TableB)