Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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
SQL Server插入查询问题_Sql_Sql Server_Tsql_Insert - Fatal编程技术网

SQL Server插入查询问题

SQL Server插入查询问题,sql,sql-server,tsql,insert,Sql,Sql Server,Tsql,Insert,我要执行此查询: INSERT INTO [Order] (FactorId, ProductId, Entity) VALUES((SELECT Top 1 FactorId FROM Factor WHERE UserId = @UserId AND Status = -1), @ProductId, @Entity) 但出现以下错误: 此字段中不允许子查询 上下文只能使用标量表达式 允许 试试这个 INSERT INTO [Order] (FactorId, ProductId, En

我要执行此查询:

INSERT INTO [Order] (FactorId, ProductId, Entity) 
VALUES((SELECT Top 1 FactorId FROM Factor WHERE UserId = @UserId AND Status = -1), @ProductId, @Entity)
但出现以下错误:

此字段中不允许子查询 上下文只能使用标量表达式 允许

试试这个

INSERT INTO [Order] (FactorId, ProductId, Entity) 
(SELECT Top 1 FactorId, @ProductId, @Entity FROM Factor 
WHERE UserId = @UserId AND Status = -1)
注意:使用select插入查询将不允许关键字:)

试试这个

INSERT INTO [Order] (FactorId, ProductId, Entity) 
(SELECT Top 1 FactorId, @ProductId, @Entity FROM Factor 
WHERE UserId = @UserId AND Status = -1)
注意:使用select插入查询将不允许关键字:)

试试看

INSERT INTO [Order] (FactorId, ProductId, Entity) 
SELECT Top 1 FactorId, @ProductId, @Entity FROM Factor WHERE UserId = @UserId AND Status = -1
试一试


如果你有其他栏目,请避免前1名,考虑这样的事情…

INSERT INTO [Order] (FactorId, ProductId, Entity) 
SELECT FactorId, @ProductId, @Entity FROM Factor 
WHERE UserId = @UserId 
  AND Status = -1
  and timestamp = (select max(timestamp) from Factor where UserId = @UserId AND Status = -1)

这个概念也适用于如果你有一个排序顺序列或任何其他唯一的列

如果你有其他的列,请避免前1个,并且考虑这样的事情…

INSERT INTO [Order] (FactorId, ProductId, Entity) 
SELECT FactorId, @ProductId, @Entity FROM Factor 
WHERE UserId = @UserId 
  AND Status = -1
  and timestamp = (select max(timestamp) from Factor where UserId = @UserId AND Status = -1)

如果您有一个排序顺序列或任何其他唯一列

I执行此查询,则此概念也适用,但会出现以下错误:INSERT语句的select列表包含的项目少于INSERT列表。SELECT值的数量必须与INSERT列的数量相匹配。我执行了此查询,但出现了以下错误:INSERT语句的SELECT列表包含的项目少于INSERT列表。SELECT值的数量必须与INSERT列的数量匹配。还有其他更好的答案。这更为复杂,并且有在max(timestamp)不唯一时插入倍数的风险。还有其他更好的答案。这更复杂,并且在max(timestamp)不唯一时有插入倍数的风险