我有以下CTE
将表lTesterID
中的Employee
列更新为从表提供程序中随机选择的有效ID。
但是我收到了这个错误
无法将值NULL插入列'lTesterID',表'Employee';列不允许空值。更新失败。
即使没有Null
值,因为我在cteTable4
中将其排除。
有人能指出我正确的方向吗?
WITH cteTable3
AS ( SELECT ROW_NUMBER() OVER ( ORDER BY NEWID() ) AS n ,
lTesterID
FROM Employee
WHERE lTesterID= 0
),
cteTable4
AS ( SELECT ROW_NUMBER() OVER ( ORDER BY NEWID() ) AS n ,
ISNULL(lTesterID,0) AS lTesterID
FROM Provider
WHERE Active = 'True'
AND lTesterID IS NOT NULL
)
UPDATE cteTable3
SET lTesterID = ( SELECT lTesterID
FROM cteTable4
WHERE cteTable3.n = cteTable4.n
AND lTesterID IS NOT NULL
)
答案 0 :(得分:2)
您正在cteTable3.n = cteTable4.n
的相关子查询中加入CTE。 cteTable3.lTesterID
将使用NULL
进行更新,其中子查询返回零行。如果您从cteTable4
返回的行数少于cteTable3
返回的行数,则会发生这种情况。