Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从select插入MS SQL输出和insert_Sql_Sql Server - Fatal编程技术网

从select插入MS SQL输出和insert

从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

我试图弄清楚如何从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 [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将是最好的方法


希望能有帮助。

你的问题是什么?谢谢,括号真的不应该在那里。