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

有没有办法可以在 sql server 中做到这一点?

4

2 回答 2

6

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

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

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

于 2012-09-05T22:39:40.670 回答
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
于 2012-09-06T04:12:39.980 回答