2012-09-05 225 views
0

我想根據輔助表列的所有值將數據插入到表中。例如基於另一個表的列值將值插入到表中

我有兩個表

CREATE TABLE Table1 (
id int identity(1, 1) not null, 
FullName varchar(100), 
Age int, 
CourseID int 

CREATE TABLE Table2 (
id int identity(1, 1) not null, 
Courses int 

我想執行這樣的事情..

insert into Table1 ('Auser',20,'And the list of Courses that I get from Table2') 

是否有我可以做到這一點在平方米l服務器?

回答

6

那麼對於一個新用戶,你想插入所有可用的課程?

INSERT INTO Table1 
    SELECT 'Ausser', 20, t2.Courses 
    FROM Table2 t2; 

編輯:這裏的小提琴:http://sqlfiddle.com/#!3/89470/1/0

1

,因爲使用的是SQL Server 2008中,你可以使用MERGE STATEMENT。這裏是你的榜樣方案

CREATE TABLE Table1 
(
    Id int identity(1, 1) not null, 
    FullName varchar(100), 
    Age int, 
    CourseID int 
) 

CREATE TABLE Table2 
(
    ID int identity(1, 1) not null, 
    Courses int 
); 

INSERT INTO Table2 
SELECT 10 UNION ALL SELECT 20 UNION ALL 
SELECT 30 UNION ALL SELECT 40 UNION ALL SELECT 50; 

--The Merge Query 
MERGE Table1 AS t1 
USING (SELECT * FROM Table2) AS t2 
ON t1.CourseID= t2.Courses 
WHEN NOT MATCHED THEN 
INSERT(FullName,Age,CourseID) 
VALUES('Ausser',20,t2.Courses); 

SELECT * 
FROM Table1 

DROP TABLE Table1 
DROP TABLE Table2 

//結果

Id FullName Age CourseID 
1 Ausser  20 10 
2 Ausser  20 20 
3 Ausser  20 30 
4 Ausser  20 40 
5 Ausser  20 50 
相關問題