插入带条件的表中

时间:2019-10-09 18:06:25

标签: sql-server sql-server-2012

我有两个桌子

表1

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

OfficeID是一个身份自动递增列。

我需要在table1中添加几个办公室(例如US5,US6):

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 个答案:

答案 0 :(得分:2)

您应该定义要插入的所有列:

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

答案 1 :(得分:0)

如果要将身份列插入到Table2中,请尝试OUTPUT子句

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

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

答案 2 :(得分:0)

尝试建立与表2的内部联接,因为您要按表2上的列进行过滤并且在select语句中无法访问,请尝试此操作

 INSERT INTO Table2  (OfficeID) 
 SELECT OfficeID FROM table1 INNER JOIN table2 ON (CLAUSE) WHERE table1.OfficeID in ((7),(8))
 AND   table2.OrgID=3