我需要将大约600条记录从一个数据库添加到另一个数据库。
第一部分从如下所示的选择中插入:
INSERT INTO RelayMapper.dbo.radioSignals(CstarID, StarName, SystemName, StarSystemCount, SuperNova, DateCreated)
SELECT NEWID(), startName, systemName, 1, 1, getDate()
FROM AISourceMapper.dbo.radioSignals
WHERE rangeICW = 5
这是棘手的地方,我不知道该怎么做。
因此,对于上面插入的每一行,我还需要将相关数据插入到另一个表中。
在NEWID()
以上将用于插入一行,然后我需要插入starCoordinates
的以及AISourceMapper.dbo.radioSignals
和它看起来是这样的:
INSERT INTO RelayMapper.dbo.radioSources(CstarID, starCoordinates, isVerified)
VALUES('1150C651-5D9A-4C13-9BE7-EF4AZ2549112', 'R.A. 13h 27m, DEC. -47deg, 29m', 1)
starCoordinates
也来自我从中选择的同一表和行(AISourceMapper.dbo.radioSignals)
有没有办法做这样的事情?
您可以使用OUTPUT子句获取插入的值,然后使用它们将其插入到另一个表中。
DECLARE @insertedId TABLE(CStartID UNIQUEIDENTIFIER)
INSERT INTO RelayMapper.dbo.radioSignals(CstarID, StarName, SystemName, StarSystemCount, SuperNova, DateCreated)
OUTPUT inserted.CStarID INTO @insertedId
SELECT NEWID(), startName, systemName, 1, 1, getDate()
FROM AISourceMapper.dbo.radioSignals
WHERE rangeICW = 5;
--with values clause
INSERT INTO RelayMapper.dbo.radioSources(CstarID, starCoordinates, isVerified)
SELECT CStarId
'R.A. 13h 27m, DEC. -47deg, 29m', 1
FROM @insertedId;
--WITH select clause
INSERT INTO RelayMapper.dbo.radioSources(CstarID, starCoordinates, isVerified)
SELECT i.CStarId, rs.starCoordinates, 1
FROM AISourceMapper.dbo.radioSignals AS rs
CROSS JOIN @insertedId AS i
WHERE rs.rangeICW = 5;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句