現在、会社の別のテーブルのデータに基づいて、1つのテーブルのデータを更新するSQLを作成しています
update table1
set column1 = (SELECT color
FROM table2
Where table1.id = table2.id)
私の目標はtable1
のcolumn 1
からの色で構成されるtable 2
、ただしid
は一意ではなく、会社のCVRであるため、複数回表示されてエラー"single-row subquery returns more than one row"
。複製には異なる色を使用できますが、これに対処する方法がわかりません。
また、重複は別の色になる可能性がありますが、すべてのインスタンスの99%ではそうではないようです。最初の色が不可能な場合は、更新する方法があるので、すべての重複が同じ色になりますか?
エラーメッセージが示すように、set column1 =
句には単一の値が必要です。データモデルに問題があるようですが、簡単な修正が必要な場合は、選択クエリを変更して単一の値を返すことができます。複数のcolor
がwhere句に一致する場合、以下はtable2
からの一意のcolor
です。
update table1
set column1 = (SELECT distinct color
FROM table2
Where table1.id = table2.id
and rownum = 1
)
時間がある場合は、別のレベルを追加して、一致する最も一般的な色を見つけ、最初の行を返します。
最初の明確な色を返すようにサブクエリを更新しました-これを指摘してくれたRDFozzに感謝します。