私は3つのテーブルを結合しようとしていますが、私はIF ELSEなしで次のSQLを持っています。Oracle SQL IF ELSEをUPDATE文に挿入するにはどうすればよいですか?
update transaction t
set t.lid= (
select l.id from list l
inner join distance d
on l.ueid=d.ueid
inner join transaction t2
on t2.id=d.id
)
唯一の問題は
select l.id from list l
inner join distance d
on l.ueid=d.ueid
inner join transaction t2
on t2.id=d.id
ひとつ返す値を超えると、私はt.gidに割り当てることができませんでしたステートメントです。私たちのビジネスルールでは、複数の値を返す場合、t.gidをnullに設定する必要があります。内部SELECT文が複数の値を返す場合、nullを返すには、このsqlのelse文をどのように組み込むことができますか?私はネット上の他の投稿を見てきましたが、ほとんどが手続きまたは関数です。
EDIT:
基本的な考え方は、l.idから上場テーブル1つの値のみを返す場合、内側はに参加した後、すなわち(トランザクションテーブル上のすべての蓋行を更新することです距離テーブル)。複数の値が返された場合は、nullとして更新する必要があります。だから私はtまたはt2だけを使うべきかどうかは完全にはわかりません。
アップデートしているtとサブクエリとの間には相関関係がないようです。もしt2が必要な場合は、これは一度だけのアップデートです。見る?また、いくつかのサンプルデータと期待される結果が有用かもしれません。そして、 'uid'は予約語です。本当に引用符で囲まれた識別子なのですか? –
@AlexPoole私の質問が更新されました(編集してください)。 uidはタイプミスでした。それはueidです。 – WowBow