Sql 嵌套的Insert和Select语句

Sql 嵌套的Insert和Select语句,sql,Sql,这就是我试图执行的查询。但问题是,只有当从批处理表返回一个ID时,它才能工作 如果批处理返回多个id,如何将多行插入BatchEvent?使用insert select而不使用values关键字。您可以从select中将其他值作为“fake”列返回,因为select需要与insert子句中指定的列数相同: INSERT INTO [log].[BatchEvent](BatchId, SeverityId, Date, Message) VALUES((SELECT [Id] FROM [lo

这就是我试图执行的查询。但问题是,只有当从批处理表返回一个ID时,它才能工作


如果批处理返回多个id,如何将多行插入BatchEvent?

使用insert select而不使用values关键字。您可以从select中将其他值作为“fake”列返回,因为select需要与insert子句中指定的列数相同:

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

我在这里没有看到任何一个c,每个Id都返回了,当只有一个Id返回时,你正在做的事情。顺便说一句,你应该阅读和阅读。它将帮助你在提问时找到一种组织思想的方法。单凭这一点就可以解决你90%的问题。效果很好。谢谢:不客气一定要阅读。
INSERT INTO [log].[BatchEvent](BatchId, SeverityId, Date, Message) 
SELECT [Id], @SeverityId, @Date, @Message FROM [log].[Batch] WHERE [EndDate] IS NULL