Sql 将值从一个表插入到另一个具有不同主键的表
我有两张桌子。表A和表B 表A 我需要在表B中插入记录以获得以下内容: 表B PrId是表B的主键,Id来自表A,其余的值是硬编码的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 在这里查找内部连接 和外键 将来,请在发布前进行一些研究如果您的表设置了主键和
请建议脚本执行相同的操作如果使用主键和外键设置了表,则可以运行以下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中的数据,如上所示。