このスレッドを調べて、そこに答えがあると思っていましたが、残念ながら見つかりませんでした...
SQL または PL/SQL を使用して最初の重複行のみを更新する Oracle の UPDATE ステートメント
お客様がデフォルトのメール アドレスを選択していない場合は、その値を更新する必要があります。
次のステートメントは、顧客がまだデフォルトの電子メールを持っていない場合、そのテーブルのすべてのレコードを更新します。
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 テーブルに複数のエントリを持っている場合、この顧客の最初のレコードを更新する必要があるだけで、デフォルトを持つことができるのは 1 つだけです。
上記の記事で見つけた次の追加を試してみましたが、すべての条件が真である最初のレコードのみを更新します - 条件が真であるすべてのレコードを更新するにはどうすればよいですか?
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'))
任意の入力を歓迎します:-)
どうもありがとう、
ステフ