我正在运行查询以更新表中的标志,该表依赖于检查子查询中是否存在值,但是当子查询遇到错误(除以零)时,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)
有没有其他人经历过这种行为,并且可以预期吗?
答案 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))