oracle 条件查询不为空 不生效


UPDATE a 
SET a.num = ( SELECT b.nnnum FROM b WHERE a.id = b.id and b.id is not null )
WHERE
    EXISTS ( SELECT 1 FROM b WHERE a.num = b.nnnum );

这样写的话 b表为空的话 他直接把a表中的num已经有的值 给制空了 and条件不为空 未生效 麻烦各位指教 谢谢~


UPDATE 表A a 
SET a.num = ( SELECT b.nnnum FROM 表B b WHERE a.id = b.id)
WHERE
    EXISTS ( SELECT 1 FROM 表B b WHERE a.id = b.id and b.nnnum is not null);

你的更新是怎么样的? 你要作为条件,那应该是放到where那里。你放在set那里,b表为空的话,它那个子查询就返回空,set进去不就是空的嘛

UPDATE a 
SET a.num = ( SELECT b.nnnum FROM b WHERE a.id = b.id and b.id is not null )
WHERE
    EXISTS ( SELECT 1 FROM b WHERE a.id = b.id and b.id is not null );

保险起见,update set子查询中的where条件,应该和 where exists中的条件保持完全一致