たとえば、1つの列A.IDで構成される行列Aがあります。私は別の列を追加A.BIRTHDATE
してALTER TABLE
、コマンド(下記参照します)。
今、私が記入したいA.BIRTHDATE
で構成されているテーブルBで一致生年月日でB.ID
とB.BIRTHDATE
。
このフォーラムには同様の例がたくさんありますが、どれも私には役立ちませんでした。それがOracle-SQLと関係があるのか、それとも質問のわずかな違いのためなのかはわかりません。
提案されたソリューションの1つはとを利用UPDATE SET
しますJOIN
(2番目のコード行を参照)。
サブクエリがレコードごとに複数の結果を取得したことを示すエラーメッセージが表示されます。これを修正する方法は?
ALTER TABLE A ADD BIRTHDATE DATE NULL;
UPDATE A
SET A.BIRTHDATE = (
SELECT B.BIRTHDATE
FROM B
WHERE A.ID= B.ID
);
ID
表Bに同じレコードが複数ある問題があります。
表Bのどのレコードに関心があるかを判断する必要があります。
merge
ステートメントを使用して、次のようにテーブルAの値を更新できます。
Merge into A
Using (select id,
min(birthdate) as birthdate -- you can also use max or any logic of your interest
From B)
On (a.id=b.id)
When matched then
Update set a.birthdate = b.birthdate;
また、updateステートメントは次のようになります。
UPDATE A
SET A.BIRTHDATE = (
SELECT min(B.BIRTHDATE) -- or max or other logic
FROM B
WHERE A.ID= B.ID
);
乾杯!!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加