2012-09-05 183 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 
相关问题