• 締切済み

UPDATE

ORACLE9i テーブル名 TABLE1 フィールド名  CODE マスタ テーブル名 MST フィールド名 CODE2 フィールド(CODE)の値とマスタのコード(CODE2)の値が同じであれば、マスタのコード(CODE2)の値をフィールド(CODE)に入れるのと、マスタデータが無い場合はNULLをいれたいのですが、マスタに無い場合の処理がわからないので おしえてください。 UPDATE TABLE1 SET CODE = MST.CODE2 WHERE TABLE1.CODE = MST.CODE2

みんなの回答

回答No.1

WHERE TABLE1.CODE = MST.CODE2(+) とすればいいんじゃないでしょうか。

関連するQ&A

  • updateしてもSQLを終了すると元に戻る

    Oracle_9→access2002 で外注開発されたシステムを利用しています さて、Oracle、SQL_Plusの[update TABLE1 SET FIELD1 = 'X' WHERE FIELD1 IS NULL]等でデータ更新後、[select 列名リスト FROM TABLE1 WHERE 検索条件]で確認すると確かに更新されているが、SQLを終了後、再起動すると元に戻ってしまいますが、どんな原因が考えられますか?update実行後に確定操作等あるのですか? Oracleはまったく初心者ですがお願いします

  • SQLで複数のテーブルと結合したUPDATE文

    普通のUPDATE文はUPDATEするテーブル名を一つ記入して UPDATE テーブルA SET フィールドA = 値A WHERE テーブルA.フィールドB = 値B みたいな感じですが、私のしたい事はと言うと UPDATE テーブルA,テーブルB,テーブルC SET A.フィールドA = 値A WHERE テーブルA.フィールドA = テーブルB.フィールドB AND テーブルB.フィールドB = テーブルC.フィールドC AND テーブルB.フィールドD = 値D AND テーブルC.フィールドE = 値E という具合に複数のテーブルがUPDATEするテーブルA以外のところで、互いに条件で結ばれており、FROM句でUPDATEしないテーブル名まで宣言しないといけなくなっています。そもそもこういうFROM句を使うUPDATE文は実行可能かも不明です。どなたか解決策お願いいたします。ちなみに開発ソフトはVBAを使っています。

  • ACCESS VBAのDSUMを使ってUPDATE

    よろしくお願いします。 通貨型のACCESSデータベースのレコードにDSUMを使ったUPDATE文で更新をしたいのですが、 うまくいきません。 イミディエイトウィンドウで出力したSQLをACCESSのクエリーで実行したところ、 "1個のフィールドで型変換エラー"となります。 実行したSQLは下記のようなものです。 UPDATE テーブル名 SET フィールド名 = DSUM(フィールド名,"テーブル名",コードI = '0000' AND コードII BETWEEN '5110' AND '5410') WHERE コードI = '0000' AND コードII = '5980'; 因みに、更新元テーブルと更新先テーブルは同じテーブルです。 行いたいのは、コードII列の「5110」~「5410」の合計値を、「5980」の場所にUPDATEを させようとしてます。 よろしくお願いします。

  • 副問合せを使った複雑なUPDATE

    はじめまして テーブルAとBがあります テーブルAをUPDATEする時にBのフィールドの値を使うのはわかるのですが UPDATE A SET A.フィールド = (SELECT B.フィールド FROM B WHERE Bの条件) ここで、B.フィールドの値が'X'なら、そのまま代入。違う場合は'Y'を入れるような場合、1回のSQLで出来るでしょうか? 出来るのであれば、どのようなSQLか御教授願います。よろしくお願いします。

  • 処理速度について(UPDATE)

    下記の2つのSQL句があります。 どのSQLが処理速度が速いのでしょうか。 また、一般的なのはどのSQLなのでしょうか。 処理1 UPDATE テーブルA SET 項目A = '0' WHERE NVL(項目A,'0') = '0'; 処理2 UPDATE テーブルA SET 項目A = '0' WHERE 項目A IS NULL; 私としては、処理2の方が早いような気がするのですが・・・ 教えてください。お願いします。

  • [Access2000]アクションクエリでお尋ねします。

    テーブル名は Table フィールド名は Filed で Filed 内には abc_uvw、def_xyz のように "_" で仕切られた文字列がはいっています。 そこで、次のようなクエリで "_"より後ろの値でFeildを書き換えようと思うのですが、 もともとのFieldの値がNULLである場合、その部分だけエラーになります。それ以外の値のはいっている部分に関してはエラーにならずに処理されますが、このエラーを回避する方法はないのでしょうか? UPDATE Table SET Field = Mid([Field],InStr(1,[Field],"_")+1,Len([Field])-InStr(1,[Field],"_"));

  • select for updateのロック

    オラクルのselect for updateでロックをするタイミングがいつですか? こんなPL/SQLのコードがあったとします。 ---↓↓↓ソースコードここから↓↓↓------------------------- select * from テーブル1 where id = 1 for update; ・・・・・(a) ~ update テーブル1 set kingaku=100 where id = 1 ・・・・・(b) ~ commit; ---↑↑↑ソースコードここまで↑↑↑------------------------- id = 1のレコードがロックされるのは(a)、(b)どちらのタイミングですか? また、このロックは ・他トランザクションから読めるけど更新できない ・他トランザクションからは読むことすらできない のどちらでしょうか? よろしくお願いします。

  • 2つのテーブルのupdate

    AtableというテーブルとBtableというテーブルのTypeフィールドをupdateする場合、テーブルが異なるごとにmysql_queryを使っているのですが、この場合、ひとつにまとめられないものでしょうか? このような使用方法が通常ですか? よろしくお願い致します。 $ASQL = "update Atable set Type = 1 where id = $a"; $BSQL = "update Btable set Type = 1 where id = $b"; mysql_query($ASQL); mysql_query($BSQL);

  • postgreSQLのupdateについて

    postgresqlのupdateについて質問です。 一つのテーブルで二つの列と任意の文字を別の列へ結合するupdate文を作りたいのですが初心者なものでわかりやすくご教授いただけたら幸いです。 UPDATE テーブル名 SET 列3 = '文字' || "列1" || '文字' || "列2" WHERE 列 Is Null; 何卒、よろしくお願い致します。

  • UPDATEを高速化したい

    MySQLバージョン4.1.16を使用しています。 複数の行をそれぞれの決まった値で更新したいのですが、 下のような記述の仕方だと更新する行が増えるにつれ、 それ相応に遅くなってしまいます(かといって他の記述の仕方を知りませんが・・・) なにかもっと高速になるような記述というのはあるのでしょうか? SET AUTOCOMMIT=0; START TRANSACTION; UPDATE tbl SET field = 'a' WHERE id = '1'; UPDATE tbl SET field = 'b' WHERE id = '2'; UPDATE tbl SET field = 'c' WHERE id = '3'; COMMIT; SET AUTOCOMMIT=1;