
「テーブルの特定の項目を、別のテーブルを参照した値でupdateできない」問題で悩んでいます。
以下の2つのテーブルがある場合、
select * from TAB_A
COL001 COL002 COL003
------ ------ ------
00001 YYY DE
00002 YYY FG
00003 YYY HI
select * from TAB_B
COL001 COL002 COL003
------ ------ ------
00001 YYY ST
00002 YYY UV
00003 YYY WX
TAB_AのCOL01とCOL02 を条件に TAB_BのCOL03を検索して、TAB_AのCOL03を更新するために
update TAB_A set TAB_A.COL003 = (
select TAB_B.COL003
from TAB_A,TAB_B
where TAB_A.COL01 = TAB_B.COL01 and
TAB_A.COL02 = TAB_B.COL02 )
と、記述すると、
ORA-01427: 単一行副問合せにより2つ以上の行が返されます。
とのメッセージが表示される場合があります。
なにか良い解決策はあるでしょうか?
「SQLは、実はテーブルの特定の項目を、別のテーブルを参照した値でupdateできない」のだ、との噂も聞きますが....
なお、使用しているDBは Oracle10gです。
No.1ベストアンサー
- 回答日時:
相関問い合わせでの更新は、UPDATE対象の表の更新レコードに対応する1件を返す副問い合わせ文を
書かないといけないのですが、副問い合わせ文の中で、更新表をFROMに書いてしまうと、更新表と
無関係の副問い合わせを行ってしまいます。
update TAB_A set TAB_A.COL003 = (
select TAB_B.COL003
from TAB_B /* <============================注目 */
where TAB_A.COL01 = TAB_B.COL01 and
TAB_A.COL02 = TAB_B.COL02 )
のようにすれば、問題なく動作するかと思いますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
UPDATE文のWHERE条件に他のテーブルのフィールドも入れたい
SQL Server
-
オラクルのUPDATEで複数テーブル
Oracle
-
NOT NULL制約がついた項目のUPDATEについて
Oracle
-
-
4
SQL、2つのテーブルで条件一致したものだけdeleteする方法は?
Oracle
-
5
単一グループのグループ関数ではありません。
Oracle
-
6
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
7
OracleのSQL*PLUSで、データが折り返されて見づらいのですが。。。
その他(データベース)
-
8
Statement ignored というエラー
Oracle
-
9
CASE文のエラーについて
Oracle
-
10
Oracleでの文字列連結サイズの上限
Oracle
-
11
ROWNUMでUPDATEをしたいのですが・・・。
Oracle
-
12
updateで複数行更新したい
Oracle
-
13
ファイルへの書き込みができない
Oracle
-
14
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
15
Oracle複数の表をもとにmerge文を実行
Oracle
-
16
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
SQLの書き方(チェックボックス)
-
select insertで複数テーブルか...
-
COUNTの取得方法(?)について...
-
外部結合とor条件混在の記述方法
-
MERGE文を単体テーブルに対して...
-
DELETE 文とEXISTSの使い方につ...
-
unionの結果は集計はできないで...
-
3つのテーブルからの抽出SQL
-
unionでマージした副問合せを結合
-
AccessからOracleへの外部結合
-
select文でフリーズします。
-
oracleの分割delete
-
他のテーブルを参照した値はupd...
-
半角英数字混在データから数字...
-
集計後の数値が倍になる
-
構成比を求めるSQL文につきまして
-
OracleのSQL*PLUSで、デー...
-
Oracleでの文字列連結サイズの上限
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select insertで複数テーブルか...
-
select句副問い合わせ 値の個...
-
SELECTの結果で同一行を複数回...
-
MERGE文を単体テーブルに対して...
-
SQL GROUPで件数の一番多いレコ...
-
unionでマージした副問合せを結合
-
外部結合とor条件混在の記述方法
-
複数テーブルのMAX値の行データ...
-
固定値を含む結合と複数テーブ...
-
結合と副問い合わせの違い
-
oracleの分割delete
-
他のテーブルを参照した値はupd...
-
SET句内で複数の条件を指定して...
-
SQLの書き方(チェックボックス)
-
集計後の数値が倍になる
-
unionの結果は集計はできないで...
-
COUNTの取得方法(?)について...
-
SQLでの絞り込み検索
-
最大値の取得
おすすめ情報