AテーブルとBテーブルがありAテーブルの値とBテーブルの値を条件で紐付けて一致する値をAテーブルに更新するのですが
単一行副問合せにより2つ以上の行が戻されますとメッセージがでます。これはどのようにして解決出来るのでしょうか。
実現したいこと
Aテーブルの値をBテーブルの値をひかくしていっちするあたいをこうしん
発生している問題・エラーメッセージ
単一行副問合せにより2つ以上の行が戻されます
該当のソースコード
update Aテーブル A set A.no = (select B.no from Bテーブル) where substr(A.no,1,2) = substr((select B.no from Bテーブル)),1,2
select B.no from Bテーブル
無条件なので必ず複数行返されるように思いますが、
どういうテーブル定義にどういうデータになってるんでしょう。
[PL/pgSQL]タグはPostgreSQLで使います。Oracle Databaseでは使えません。
質問に
>select B.no from Bテーブル
の結果を追記してください。
質問に使っているテーブルのCREATE TABLE文を追加してください。
UPDATE文のWHERE句にSUBSTRが2つあります。
これはUPDATEする度にテーブルを全件走査するのでデータが増えるとどんどん遅くなって、使っている現場からクレームが入ります。
SUBSTRする列を最初から別々に分けないと使い物にならなくなるでしょう。
あなたの回答
tips
プレビュー