Oracle:基于结果集计数更新行

问题描述

我正在尝试根据返回的行数更新下表。 如果结果集仅返回1行,则将stat设置为N,如果count> 1或count

所以我的第一个查询返回id(我们必须发送此查询返回的id来更新查询) 第二个查询仅在结果集只有一行时才更新。

    create table person(id number(10),stat char(1));
    insert into person(id,stat)values(123,'Y');
    insert into person(id,stat)values(345,'Y');
    commit;

输入:

enter image description here

输出

例如我的选择查询返回id = 345

enter image description here

任何帮助将不胜感激。

解决方法

如果该ID仅出现一次,则此更新会将 stat 设置为 N

UPDATE person p1
   SET p1.stat = 'N'
 WHERE p1.id IN (  SELECT p2.id
                     FROM person p2
                 GROUP BY p2.id
                   HAVING COUNT (*) = 1);