嵌套的插入和选择语句

时间:2018-07-31 08:48:16

标签: sql

INSERT INTO [log].[BatchEvent](BatchId, SeverityId, Date, Message) VALUES((SELECT [Id] 
FROM [log].[Batch] WHERE [EndDate] IS NULL), @SeverityId, @Date, @Message)

这是我要执行的查询。但是问题在于,只有从ID表返回一个Batch时,它才有效。

如果从BatchEvent返回了多个ID,如何在Batch中插入多行?

1 个答案:

答案 0 :(得分:1)

使用不带values关键字的插入选择。您可以从选择中返回其他值作为'fake'列,因为选择需要具有与insert子句中指定的列数相同的列数:

INSERT INTO [log].[BatchEvent](BatchId, SeverityId, Date, Message) 
SELECT [Id], @SeverityId, @Date, @Message FROM [log].[Batch] WHERE [EndDate] IS NULL