根据另一个表的列值将值插入表中

时间:2012-09-05 22:34:01

标签: sql sql-server sql-server-2008 tsql

我想根据辅助表列的所有值将数据插入表中。例如

我有两张桌子

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')

有没有办法可以在sql server中执行此操作?

2 个答案:

答案 0 :(得分:6)

那么对于一个新用户,您想要插入所有可用课程吗?

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

编辑:这是小提琴:http://sqlfiddle.com/#!3/89470/1/0

答案 1 :(得分: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