所以我试图从三个不同的表中将数据插入到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')
答案 0 :(得分:2)
您只需要进行这些子查询:
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
是返回一个或多个,而每个子查询返回一行,一个值整个查询中的每一行。