我有一个表,每行有一个唯一的ID,我还有另一个表,其中有一个列用于相同的ID和其他一些ID。我想对第一张表中的每一行,在第二张表中创建多个具有相同ID但手动设置不同值的行。我只需要对现有数据执行一次此操作。就像是:
insert into person.rooms(personID, roomID, isDecorated)
values (personID, 0, 1),
(personID, 1, 1),
(personID, 2, 0),
(personID, 3, 0)
select personID from person.rooms
谢谢。
您在这里不需要values子句,但是需要多个UNION ALL select语句,如下所示:
insert into person.rooms(personID, roomID, isDecorated)
select personID, 0, 1 from person.rooms
UNION ALL
select personID, 1, 1 from person.rooms
UNION ALL
select personID, 2, 0 from person.rooms
UNION ALL
select personID, 3, 0 from person.rooms
或者您可以使用CROSS APPLY
类似这样的东西。
insert into person.rooms(personID, roomID, isDecorated)
SELECT C.personID, C.RoomID, C.isDecorated
FROM person.rooms t
CROSS APPLY (values (t.personID, 0, 1),
(t.personID, 1, 1),
(t.personID, 2, 0),
(t.personID, 3, 0) )c( personID,RoomID, isDecorated)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句