SQL Server: добавить несколько строк в одном запросе SQL - PullRequest
0 голосов
/ 23 сентября 2019

Я хочу вставить несколько строк в один запрос следующим образом:

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, и их слишком много.Есть ли способ сделать это?

Ответы [ 2 ]

5 голосов
/ 23 сентября 2019

Использование 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 голос
/ 23 сентября 2019

Используйте insert ... select ... join, чтобы вы могли манипулировать вашим объединением, чтобы оно было чем-то более сложным, чем просто "in"

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

, чтобы убедиться, что у вас нет многона много совпадений JOIN в вашем операторе ON, иначе это может замедлить запрос

...