插入不起作用

时间:2010-11-04 10:14:23

标签: sql sql-server-2008

为什么下面的查询不起作用:

INSERT INTO [ProcessStatus] ([ProcessId])
SELECT TMP.[ProcessId]

FROM (
SELECT DISTINCT 
     [ProcessId]
FROM [Process]
) TMP

错误信息是(已添加退货):

Subquery returned more than 1 value.
This is not permitted when the subquery follows =, !=, <, <= , >, >= 
or when the subquery is used as an expression.

3 个答案:

答案 0 :(得分:2)

ProcessStatus表上可能存在错误触发器。

答案 1 :(得分:0)

假设[Process]只有一个字段(或任何其他字段自动递增),则不需要子查询。 尝试:

insert into [ProcessStatus] ([ProcessId])
select distinct 
     [ProcessId]
FROM [Process]

编辑:如果您只是想知道为什么错误消息,它应该有效,您确定它是失败的吗?

答案 2 :(得分:0)

这似乎没有任何问题。它对我有用:

CREATE TABLE #ProcessStatus (ProcessID INTEGER)
CREATE TABLE #Process (ProcessID INTEGER)

INSERT INTO #Process VALUES(1)
INSERT INTO #Process VALUES(2)

INSERT INTO #ProcessStatus (ProcessId)
SELECT TMP.ProcessId
FROM (
SELECT DISTINCT 
     ProcessId
FROM #Process
) TMP
  

(2行(s)受影响)

你完全确定发生了什么事吗?