2011-12-08 95 views
0

我需要從一個表中創建一個靜態「複製」值並將它們存儲在另一個表中。根據多列選擇語句插入語句

我知道如何做到這一點的最好方法是從數據庫獲取值到我的應用程序,通過它們循環並連接多個INSERT語句,然後執行查詢。

有沒有辦法做到這一點,而沒有在應用程序和數據庫之間往返?

我希望像這樣的工作:

INSERT INTO dbo.StudentProject 
VALUES (SELECT StudentID, ProjectID 
     FROM dbo.StudentProjectSimulation 
     WHERE SimulationID = 1) 

但事實並非如此。

(一切都是int所以不用擔心有)

+0

http://msdn.microsoft.com/en-us取代適當的列名Student_ColProjectID_Col /library/dd776381.aspx –

回答

1

你是非常接近:

INSERT INTO dbo.StudentProject 
SELECT StudentID, ProjectID 
FROM dbo.StudentProjectSimulation 
WHERE SimulationID = 1 
+1

在不定義要插入的影響列的情況下執行插入操作是一種很差的做法。如果表更改您的代碼中斷。 @BZN_DBer有應該被接受的答案。 – HLGEM

+0

我同意,但我只是簡單地對OP的查詢進行了少許更改,以回答他的問題。 –

2

剛從insert into子句下降values

Insert Into dbo.StudentProject 
Select StudentID, ProjectID 
From dbo.StudentProjectSimulation 
Where SimulationID = 1; 
+0

我更喜歡你的格式,雖然沒有太大的不同。 – MJB

2

或者明確定義的列插入到使用以下命令,其中你dbo.StudentProject

Insert Into dbo.StudentProject 
    (
    Student_Col, 
    ProjectID_Col 
) 
Select 
    StudentID, 
    ProjectID 
From dbo.StudentProjectSimulation 
Where SimulationID = 1