无法使用多个select语句将数据插入表中

时间:2014-04-24 13:40:32

标签: sql database sql-server-2008 database-design

所以我试图从三个不同的表中将数据插入到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')

1 个答案:

答案 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是返回一个或多个,而每个子查询返回一行,一个值整个查询中的每一行。