我想根据辅助表列的所有值将数据插入表中。例如
我有两张桌子
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中执行此操作?
答案 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