2014-04-24 73 views
2

所以我試圖從三個不同的表中插入數據到Main_Contract_Data表中,它產生的錯誤如下所示,有誰知道爲什麼?無法使用多個select語句將數據插入表

錯誤: 消息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') 

回答

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將返回一個或多個,而每個子查詢返回一行,並且對於整個查詢中的每一行返回一個值

相關問題