SQL Server:在一个sql查询中添加多行

时间:2019-09-23 12:16:43

标签: sql sql-server database sql-insert

我想像这样在一个查询中插入多行:

insert into EducationInfo (student_id, school_id)
values (
    (select id
     from STUDENT
     where iin in (select distinct iinplt
                   from TEST_STUDENT
                   where id_university = 9)), 23421
       )

当然不可能。我知道我可以这样做:

 values(1,23421),
 values(2,23421)...

但是您可以看到,我不知道student_id列中的ID,并且ID太多。有什么可行的方法吗?

2 个答案:

答案 0 :(得分:5)

使用insert . . . select

insert into nedb.EducationInfo (student_id, school_id)
     select id, 23421
     from nedb.student
     where iin in (select iinplt
                   from IMPORT_DATA.esuvo_students
                   where id_university = 9
                  );

请注意,使用select distinct时不需要in

答案 1 :(得分:1)

使用insert ... select ... join,这样您就可以操纵联接,使其变得更加复杂,只是在其中

insert into nedb.EducationInfo (student_id, school_id)
 select distinct s.id, 23421
 from nedb.student s
 join (SELECT distinct iinplt FROM IMPORT_DATA.esuvo_students 
       WHERE id_university = 9 ) es ON s.iin = es.iinplt

确保您的ON语句中没有太多或多个JOIN匹配项,否则可能会降低查询速度