SQL WHERE EXISTS掩盖了子查询中的错误

时间:2019-01-09 11:15:29

标签: sql runtime-error exists

我正在运行查询以更新表中的标志,该表依赖于检查子查询中是否存在值,但是当子查询遇到错误(除以零)时,EXISTS语句将其视为返回的行并进行更新。

例如

Update xxxx
Set Flagfield=1 
FROM xxxx
WHERE
EXISTS (
Select * FROM yyyy Inner join xxxx on xxx.ID = yyyy.id
WHERE yyyy.int1 / yyyy.int2 > 1)

有没有其他人经历过这种行为,并且可以预期吗?

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,则可以尝试以下代码,只需在where语句中添加对int2的检查即可。

Update xxxx
Set Flagfield=1 
FROM xxxx
WHERE
EXISTS (
Select * FROM yyyy Inner join xxxx on xxx.ID = yyyy.id
WHERE (yyyy.int2 IS NOT NULL AND yyyy.int2 <> 0) AND (yyyy.int1 / yyyy.int2 > 1))