我有两个桌子
表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
如何实现?谢谢
答案 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