Sql server 2008 r2 SQL Server:基于两个表在一个表中插入值';数据

Sql server 2008 r2 SQL Server:基于两个表在一个表中插入值';数据,sql-server-2008-r2,Sql Server 2008 R2,我在两个不同的数据库中有两个同名的表TableA包含一列ServerName,而DatabaseB中的另一列TableA包含ServerId列。我在DatabaseB中有第三个表TableB,其中包含ServerId和ServerName,我想将DatabaseA中的ServerName及其DatabaseB中的ServerId映射到DatabaseB表a 例如 在数据库A中: ServerName MyServer HisServer HerServer 表A: ServerNa

我在两个不同的数据库中有两个同名的表<
DatabaseA中的code>TableA
包含一列
ServerName
,而
DatabaseB中的另一列
TableA
包含
ServerId
列。我在
DatabaseB
中有第三个表
TableB
,其中包含
ServerId
ServerName
,我想将
DatabaseA
中的
ServerName
及其
DatabaseB
中的
ServerId
映射到
DatabaseB
表a

例如

数据库A中

ServerName
  MyServer
  HisServer
  HerServer
表A

ServerName
  MyServer
  HisServer
  HerServer
数据库b

ServerId | ServerName
1          MyServer
2          HisServer
3          HerServer
表b

ServerId | ServerName
1          MyServer
2          HisServer
3          HerServer
我想将服务器名映射到服务器ID,并将ID插入DatabaseB的TableA中


提前感谢。

这是一个完整的脚本

USE master;
IF EXISTS (SELECT * FROM sys.databases WHERE name = N'DatabaseA')
    DROP DATABASE DatabaseA;
IF EXISTS (SELECT * FROM sys.databases WHERE name = N'DatabaseB')
    DROP DATABASE DatabaseB;
CREATE DATABASE DatabaseA;
CREATE DATABASE DatabaseB;
GO
USE DatabaseA;
GO
CREATE TABLE dbo.TableA (
    ServerName  sysname     NOT NULL
);
INSERT INTO dbo.TableA VALUES (N'MyServer');
INSERT INTO dbo.TableA VALUES (N'HisServer');
INSERT INTO dbo.TableA VALUES (N'HerServer');
SELECT * FROM dbo.TableA;
GO
USE DatabaseB;
GO
CREATE TABLE dbo.TableA (
    ServerID    smallint    NOT NULL
);

CREATE TABLE dbo.TableB (
    ServerID    smallint    NOT NULL,
    ServerName  sysname     NOT NULL
);
INSERT INTO dbo.TableB VALUES (1, N'MyServer');
INSERT INTO dbo.TableB VALUES (2, N'HisServer');
INSERT INTO dbo.TableB VALUES (3, N'HerServer');
SELECT * FROM dbo.TableB;

-- "I want to map the ServerNames to the ServerIds and insert the Ids into DatabaseB's TableA."

INSERT INTO dbo.TableA (
    ServerID
)
SELECT bb.ServerID
FROM DatabaseA.dbo.TableA   AS aa
JOIN DatabaseB.dbo.TableB   AS bb
  ON aa.ServerName = bb.ServerName;

SELECT * FROM dbo.TableA;
以及输出:

ServerName
-------------
MyServer
HisServer
HerServer

ServerID ServerName
-------- -------------------
       1 MyServer
       2 HisServer
       3 HerServer

ServerID
--------
       1
       2
       3

标记为答案,因为您帮助我找到了一个稍微简单一点的解决方案。:-)