Вставить в таблицу с условием где - PullRequest
0 голосов
/ 09 октября 2019

У меня есть две таблицы

Table1

            OfficeID  OfficeName
            -------------------
            1          UK
            2          JP
            3          US1
            4          US2
            5          US3
            6          US4

OfficeID - это столбец автоматического увеличения идентификатора.

Мне нужно добавить еще пару офисов (например, US5, US6) в table1:

insert into  Table1 (OfficeName) 
values ('US5'), ('US6')

У меня есть другая таблица2

            OrgID   OfficeID
            ---------------- 
            1            1
            2            2 
            3            3
            3            4
            3            5
            3            6  

После ввода US5 и US6 новые данные в таблице 1 будут

            OfficeID  OfficeName
            -------------------
            1          UK
            2          JP
            3          US1
            4          US2
            5          US3
            6          US4
            7          US5
            8          US6

После этого я хотел бы вставить officeID в таблицу 2, чтобы моя таблица 2 выглядела следующим образом:

            OrgID   OfficeID
            ---------------- 
            1            1
            2            2 
            3            3
            3            4
            3            5
            3            6 
            3            7
            3            8

Вот как я пытаюсь это сделать

insert into Table2 (OfficeID) 
    select OfficeID 
    from table1 
    where OfficeID in ((7), (8))
      and table2.OrgID = 3

Как этого добиться? Спасибо

Ответы [ 3 ]

2 голосов
/ 09 октября 2019

Вы должны определить все столбцы, которые хотите вставить:

         insert into Table2  (OfficeID, OrgID) 
         select OfficeID, 3 from table1 where OfficeID in ((7),(8))
0 голосов
/ 09 октября 2019

попробуйте сделать внутреннее соединение с таблицей 2, потому что вы пытаетесь фильтровать по столбцу в таблице 2 и недоступны в операторе выбора, попробуйте это

 INSERT INTO Table2  (OfficeID) 
 SELECT OfficeID FROM table1 INNER JOIN table2 ON (CLAUSE) WHERE table1.OfficeID in ((7),(8))
 AND   table2.OrgID=3
0 голосов
/ 09 октября 2019

Если вы хотите, чтобы столбец идентификаторов был вставлен в таблицу 2, попробуйте OUTPUT предложение

Insert into Table1 (OfficeName)
    OUTPUT inserted.OfficeID, 3 INTO Table2  (OfficeID, OrgID) 

values
('US5'),
('UK6')
go

...