我查看了这个帖子,我以为我会在那里找到我的答案,但不幸的是没有......
Oracle 中的 UPDATE 语句使用 SQL 或 PL/SQL 仅更新第一个重复行
如果我们的客户没有选择默认电子邮件地址,我需要更新该值。
如果客户还没有默认电子邮件,则以下语句会更新该表的所有记录:
update si_contactemails
set ISDEFAULT = 'Y'
where entityid in
(select customerid from si_customers where custstatus = 'A' and deleted = 0)
and entityid in (select entityid from si_contactemails group by entityid having MAX(ISDEFAULT) = 'N')
但是如果客户碰巧在 si_contactemails 表中有多个条目,我只需要更新该客户的第一条记录,只能有一个默认值。
我尝试了在上面提到的文章中找到的以下添加,但它只更新所有条件都为真的第一条记录 - 如何更新条件为真的所有记录?
update si_contactemails
set ISDEFAULT = 'Y'
where entityid in
(select customerid from si_customers where custstatus = 'A' and deleted = 0)
and entityid in (select entityid from si_contactemails group by entityid having MAX(ISDEFAULT) = 'N')
AND rowid = (SELECT min(rowid)
FROM si_contactemails
WHERE entityid in (select min(entityid) from si_contactemails group by entityid having MAX(ISDEFAULT) = 'N'))
任何输入表示赞赏:-)
非常感谢,
斯蒂芬