存在的SQL正在屏蔽子查询中的错误

存在的SQL正在屏蔽子查询中的错误,sql,runtime-error,exists,Sql,Runtime Error,Exists,我正在运行一个查询来更新表中的标志,该表依赖于检查子查询中是否存在值,但当子查询得到一个被零除的错误时,EXISTS语句将其视为返回的行并继续更新 e、 g 还有其他人经历过这种行为吗?这是可以预料到的吗?如果我正确理解了您的问题,那么您可以尝试下面的代码,只需在where语句中添加对int2的检查 Update xxxx Set Flagfield=1 FROM xxxx WHERE EXISTS ( Select * FROM yyyy Inner join xxxx on xxx.ID

我正在运行一个查询来更新表中的标志,该表依赖于检查子查询中是否存在值,但当子查询得到一个被零除的错误时,EXISTS语句将其视为返回的行并继续更新

e、 g


还有其他人经历过这种行为吗?这是可以预料到的吗?

如果我正确理解了您的问题,那么您可以尝试下面的代码,只需在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))

似乎yyyy.int2等于零为什么要除法,这里的yyyy.int1>yyy.int2不够吗?SQL更新中确实有两次xxxx表?您使用的是哪种产品?SQL只是一种查询语言,不是特定数据库产品的名称,您的更新是非标准SQL。请为使用postgresql、oracle、sql server、db2等的数据库产品添加一个链接……您不需要将外部查询与现有查询关联起来吗?如果只有一行存在,您将更新所有xxxx?
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))