もうかなり考えたのですが、なかなか答えが出てきません。
OracleのUPDATE文なのですが、書き換えるデータ自体は固定ですが、その対象行が他のテーブル条件を参照する場合どうすればよいのでしょうか?
うまく書く方法が分からず、INNER JOIN で実現しようとしたらSETキーワードがありません(ORA-00971)になってしまい・・・。
---------
UPDATE テーブル1
INNER JOIN テーブル2
ON テーブル1.ID = テーブル2.ID
AND テーブル1.DAT1 = TO_CHAR(テーブル2.DAT + 固定データ)
AND TO_CHAR(テーブル2.DAT2 + 固定データ) = 4
SET テーブル1.MONEY4 = 0
WHERE
テーブル1.MONEY4 > 0
---------
こんな感じのSQLです。
ようは、書き換えるデータは0なんですが、その該当するカラム条件が別に複数あって、どのように書けばよいのかが分かりません。。。
誰か詳しい人、よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
事前確認してませんが…勘でw
UPDATE テーブル1
SET テーブル1.MONEY4 = 0
WHERE
テーブル1.ID IN(
SELECT テーブル1.ID
FROM
テーブル1
INNER JOIN テーブル2
ON テーブル1.ID = テーブル2.ID
AND テーブル1.DAT1 = TO_CHAR(テーブル2.DAT + 固定データ)
AND TO_CHAR(テーブル2.DAT2 + 固定データ) = 4
WHERE テーブル1.MONEY4 > 0
)
動きました!ありがとうございます!!
これは、WHEREの後にIDがIN以下のサブクエリでヒットしたものと合致した~ってことになるんですね・・・。
助かりましたー。。。
No.2
- 回答日時:
こんなんじゃだめでしょうか
UPDATE テーブル1
SET テーブル1.MONEY4 = 0
WHERE
テーブル1.MONEY4 > 0
AND EXISTS
( SELECT 1 FROM テーブル2
WHERE テーブル1.ID = テーブル2.ID
AND テーブル1.DAT1 = TO_CHAR(テーブル2.DAT + 固定データ)
AND TO_CHAR(テーブル2.DAT2 + 固定データ) = 4 )
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle SQL update方法 2 2022/06/22 14:07
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) アクセス 削除するレコードを含んだテーブルを指定してくださいのエラー対処方法 1 2022/11/24 15:01
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Oracle sqlのupdate文で質問です。 テーブルBの番号をキーにテーブルAの身長をテーブルBの身長に更新 2 2022/11/02 15:15
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブル名をカラムとして取得...
-
PLSQLのNumber型の初期化
-
複数テーブルを結合するには?
-
ROWNUMでUPDATEをしたいのです...
-
DELETE文とロックについて
-
SQL(oracle)でご助言いただきた...
-
UPDATE文
-
OracleのSQLで同テーブルのカラ...
-
SQL、2つのテーブルで条件一致...
-
SQL文のCOUNTの戻り値は?
-
半角英数文字の抽出がしたい。
-
SQL 複数テーブルのupdate
-
ワークテーブルって何?
-
SQLで違うテーブルの値を比較し...
-
update文で改行を入れる
-
SQL 不要な文字列を削除したい
-
件数とデータを同時に取得する...
-
Viewのカラムの長さが不明?
-
UPDATE文で、書き換えるデータ...
-
distinct をexistsに変換する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブル名をカラムとして取得...
-
SQL、2つのテーブルで条件一致...
-
update文で改行を入れる
-
ROWNUMでUPDATEをしたいのです...
-
SQL*LoaderでCSVから指定した列...
-
SQLでSUMなどの関数でデータが...
-
sqlplusで表示が変なので、出力...
-
カラム位置変更
-
件数とデータを同時に取得する...
-
SQL 複数テーブルのupdate
-
特定のカラムが更新されたとき...
-
OracleのSQLで同テーブルのカラ...
-
数値をNUMBER型にするかCHAR型...
-
UPDATE文
-
LONG型の先頭250バイトを Varch...
-
SQLで違うテーブルの値を比較し...
-
DELETE文とロックについて
-
PLSQLのNumber型の初期化
-
SQL(oracle)でご助言いただきた...
-
半角英数文字の抽出がしたい。
おすすめ情報