从select插入MS SQL输出和insert
我试图弄清楚如何从SELECT组合INSERT并返回插入记录的id值从select插入MS SQL输出和insert,sql,sql-server,Sql,Sql Server,我试图弄清楚如何从SELECT组合INSERT并返回插入记录的id值 INSERT INTO [someDB].[dbo].[OBJ] ( column1, column2, column3 ) OUTPUT inserted.ID (SELECT TOP 1 590675, column2, column3 FROM [someDB].[dbo].[OBJ] WHERE ID = 317817) 这里的语法有点错误 你想要: INSERT INTO
INSERT INTO [someDB].[dbo].[OBJ] ( column1, column2, column3 )
OUTPUT inserted.ID (SELECT TOP 1 590675, column2, column3
FROM [someDB].[dbo].[OBJ] WHERE ID = 317817)
这里的语法有点错误 你想要:
INSERT INTO [someDB].[dbo].[OBJ] ( column1, column2, column3 )
OUTPUT inserted.ID
SELECT TOP 1
590675,
column2,
column3
FROM [someDB].[dbo].[OBJ] WHERE ID = 317817
ORDER BY ...?; --You have a TOP 1, thus you really need an ORDER BY as well.
如果您试图在INSERT语句之后获取新ID,则可以使用。例如:
INSERT INTO [someDB].[dbo].[OBJ] ( column1, column2, column3 )
SELECT TOP 1
590675,
column2,
column3
FROM [someDB].[dbo].[OBJ] WHERE ID = 317817
ORDER BY ...
SELECT SCOPE_IDENTITY(); -- Last identity generated in current session and current scope
SELECT @@IDENTITY; -- Last identity generated in current session across all scopes
SELECT IDENT_CURRENT([someDB].[dbo].[OBJ]) -- Last identity generated for the given table in any session and any scope
因为您只插入一行,所以SCOPE_IDENTIY将是最好的方法
希望能有帮助。你的问题是什么?谢谢,括号真的不应该在那里。