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)不唯一时有插入倍数的风险