首页 > 解决方案 > 甲骨文SQL;根据另一个表中的条件更新列

问题描述

我有这个代码:

UPDATE Properties pr
SET price = 5000
WHERE EXISTS (SELECT cm.propertyno 
              FROM Comments cm
              GROUP BY cm.propertyno
              HAVING COUNT(cm.propertyno) < 2);

我想根据 Comments 表中列的条件更新 Properties 表中的列。当我运行上面的代码时,所有行都会更新。而我希望更新 Comments 表中少于 2 个 propertyno 的行。

表结构:

桌子

桌子

标签: sqloraclesql-update

解决方案


使用相关子查询:

UPDATE Properties pr
    SET price = 5000
    WHERE EXISTS (SELECT cm.propertyno 
                  FROM Comments cm 
                  WHERE cm.propertyno = pr.propertyno
                  GROUP BY cm.propertyno
                  HAVING COUNT(cm.propertyno) < 2
                 );

您的版本只是检查GROUP BY查询是否返回任何行——并且可能确实如此。与外部查询没有任何联系。

据推测,该连接已打开propertyno


推荐阅读