因此,我尝试将三个不同表中的数据插入到 Main_Contract_Data 表中,但它产生了如下所示的错误,有人知道为什么吗?
错误: 消息 120,级别 15,状态 1,第 1 行 INSERT 语句的选择列表包含的项目少于插入列表。 SELECT 值的数量必须与 INSERT 列的数量匹配。
//SQL Server 2008代码
INSERT INTO Main_Contract_Data
(organisation_name,
contract_start_date,
a_manager,
d_manager)
(SELECT [Client]
FROM [Internal].[dbo].[RequiredFields$])
(SELECT [Start Date]
FROM [Internal].[dbo].[RequiredFields$])
(SELECT person_id
FROM A_Manager
WHERE person_id = '5')
(SELECT person_id
FROM D_Manager
WHERE person_id = '6')
最佳答案
您只需要进行这些子查询:
INSERT INTO Main_Contract_Data
(organisation_name,
contract_start_date,
a_manager,
d_manager)
SELECT
(SELECT [Client]
FROM [Internal].[dbo].[RequiredFields$]),
(SELECT [Start Date]
FROM [Internal].[dbo].[RequiredFields$]),
(SELECT person_id
FROM A_Manager
WHERE person_id = '5'),
(SELECT person_id
FROM D_Manager
WHERE person_id = '6')
但请记住,每个子查询只能返回一行,而整体查询需要返回整个结果集。如果也只有一行,那也没关系,但整体 SELECT
会返回一个或多个,而每个子查询都会返回一行和一个值 em> 对于整个查询中的每一行。
关于sql - 无法使用多个select语句向表中插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23270678/