Sql 将值从一个表插入到另一个具有不同主键的表

Sql 将值从一个表插入到另一个具有不同主键的表,sql,sql-server,sql-server-2008,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008,Sql Server 2008 R2,我有两张桌子。表A和表B 表A 我需要在表B中插入记录以获得以下内容: 表B PrId是表B的主键,Id来自表A,其余的值是硬编码的 请建议脚本执行相同的操作如果使用主键和外键设置了表,则可以运行以下select查询将两个表合并为一个表 select a.PrId, b.ID, a.Resident, a.Date from Table a inner join Table b on a.PrID = b.ID 在这里查找内部连接 和外键 将来,请在发布前进行一些研究如果您的表设置了主键和

我有两张桌子。表A和表B

表A

我需要在表B中插入记录以获得以下内容:

表B

PrId是表B的主键,Id来自表A,其余的值是硬编码的


请建议脚本执行相同的操作

如果使用主键和外键设置了表,则可以运行以下select查询将两个表合并为一个表

select a.PrId, b.ID, a.Resident, a.Date 
from Table a inner join 
Table b on a.PrID = b.ID
在这里查找内部连接

和外键


将来,请在发布前进行一些研究

如果您的表设置了主键和外键,则可以运行以下select查询将两个表合并为一个表

select a.PrId, b.ID, a.Resident, a.Date 
from Table a inner join 
Table b on a.PrID = b.ID
在这里查找内部连接

和外键


将来,请在发布前做一些研究

您是否希望直接从一个表插入另一个表?如果是这样,下面是一个可以在SSMS中运行的示例:

-- create table variables for illustration purposes --

DECLARE @tableA TABLE ( [Id] INT, [Name] VARCHAR(10) );
DECLARE @tableB TABLE ( [PrId] INT IDENTITY (1, 1), [Id] INT, [Resident] VARCHAR(10), [Date] SMALLDATETIME );

-- insert sample data into @tableA --

INSERT INTO @tableA ( [Id], [Name] ) VALUES ( 2, 'John' ), ( 3, 'Peter' ), ( 4, 'Rachel' );

-- show rows in @tableA --

SELECT * FROM @tableA;

/*
    +----+--------+
    | Id |  Name  |
    +----+--------+
    |  2 | John   |
    |  3 | Peter  |
    |  4 | Rachel |
    +----+--------+
*/

-- insert records from @tableA to @tableB --

INSERT INTO @tableB (
    [Id], [Resident], [Date]
)
SELECT
    [Id], 'Yes', '07/01/2018'
FROM @tableA;

-- show inserted rows in @tableB --

SELECT * FROM @tableB;

/*
+------+----+----------+---------------------+
| PrId | Id | Resident |        Date         |
+------+----+----------+---------------------+
|    1 |  2 | Yes      | 2018-07-01 00:00:00 |
|    2 |  3 | Yes      | 2018-07-01 00:00:00 |
|    3 |  4 | Yes      | 2018-07-01 00:00:00 |
+------+----+----------+---------------------+
*/

您是否希望直接从一个表插入另一个表?如果是这样,下面是一个可以在SSMS中运行的示例:

-- create table variables for illustration purposes --

DECLARE @tableA TABLE ( [Id] INT, [Name] VARCHAR(10) );
DECLARE @tableB TABLE ( [PrId] INT IDENTITY (1, 1), [Id] INT, [Resident] VARCHAR(10), [Date] SMALLDATETIME );

-- insert sample data into @tableA --

INSERT INTO @tableA ( [Id], [Name] ) VALUES ( 2, 'John' ), ( 3, 'Peter' ), ( 4, 'Rachel' );

-- show rows in @tableA --

SELECT * FROM @tableA;

/*
    +----+--------+
    | Id |  Name  |
    +----+--------+
    |  2 | John   |
    |  3 | Peter  |
    |  4 | Rachel |
    +----+--------+
*/

-- insert records from @tableA to @tableB --

INSERT INTO @tableB (
    [Id], [Resident], [Date]
)
SELECT
    [Id], 'Yes', '07/01/2018'
FROM @tableA;

-- show inserted rows in @tableB --

SELECT * FROM @tableB;

/*
+------+----+----------+---------------------+
| PrId | Id | Resident |        Date         |
+------+----+----------+---------------------+
|    1 |  2 | Yes      | 2018-07-01 00:00:00 |
|    2 |  3 | Yes      | 2018-07-01 00:00:00 |
|    3 |  4 | Yes      | 2018-07-01 00:00:00 |
+------+----+----------+---------------------+
*/

在表2中,表1的ID将被视为
外键
,因此,将表1中的键插入表2中的
外键
ID
,就像您在问的那样,表1的ID将被视为表2中的
外键
,因此,将表1中的键插入表2中的
外键
ID
应该不会有问题,就像您在问PrId是一个标识吗?表B是一个空表。我需要填充表B中的数据,如上所示。表B是一个空表。我需要填充表B中的数据,如上所示。