質問させていただきます。
OracleのUPDAE文を作成しています。
以下のようなSQLを作成したところ、問題無く動きました。
①
UPDATE テーブルA A
SET A.支払金額 = (SELECT B.支払金額
FROM テーブルB B
WHERE B.コード = A.コード )
そこで、テーブルAの「コード=XXX」のデータだけ更新しようします。
②
UPDATE テーブルA A
SET A.支払金額 = (SELECT B.支払金額
FROM テーブルB B
WHERE B.コード = A.コード )
WHERE A.コード = 'XXX'
このSQLも問題無く動きます。
ただ、以下に変更すると、「A.支払金額にNULLを更新できない」と怒られます。
③
UPDATE テーブルA A
SET A.支払金額 = (SELECT B.支払金額
FROM テーブルB B
WHERE B.コード = A.コード
AND A.コード = 'XXX' )
なぜ②はいいのに、③はだめなのでしょう?
また、AとBの支払金額が異なるデータのみUPDATEしたいと思い
以下のSQLを実行しましたが、③と同じエラーになります。
④
UPDATE テーブルA A
SET A.支払金額 = (SELECT B.支払金額
FROM テーブルB B
WHERE B.コード = A.コード
AND A.支払金額 = B.支払金額)
条件なので、③も④も動くと思っていたのですが、
なぜ実行できないのかわかっていません。
わかる方、教えていただけると嬉しいです。
No.2ベストアンサー
- 回答日時:
②
UPDATE テーブルA A
SET A.支払金額 = (SELECT B.支払金額
FROM テーブルB B
WHERE B.コード = A.コード )
WHERE A.コード = 'XXX'
これを日本語に翻訳すると、以下のようになります。
ーーーーーーーーーーーーーーーーーーーーーーー
テーブルA の A.コード が 'XXX' のものについて更新する。
そのとき、A.支払金額 には B.コード が A.コード である B.支払金額 を代入する。
ーーーーーーーーーーーーーーーーーーーーーーー
③
UPDATE テーブルA A
SET A.支払金額 = (SELECT B.支払金額
FROM テーブルB B
WHERE B.コード = A.コード
AND A.コード = 'XXX' )
テーブルA の すべてのレコードを更新する。
そのとき、A.支払金額 には B.コード が A.コード でかつ 'XXX' である B.支払金額 を代入する。
(上記条件に当てはまらない場合は、B.支払金額 は NULL を返す。そして、A.支払金額 が NULL を受け付けない設定ならばエラーとなる。)
ご回答ありがとうございます。
ご説明いただき、すっきりしました。
A.支払金額がNULL登録可能だったら、
データがおかしくなるところでした。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- Oracle SQL update方法 2 2022/06/22 14:07
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- Access(アクセス) MAXで0が出力される 1 2022/03/31 21:43
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 神奈川県の市区町村の一覧。ただ 3 2023/05/01 18:01
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
Accessユニオンクエリーで2つ...
-
SELECT時にカウントアップ
-
片方だけ抽出する方法(SQL)
-
SQL 2つのテーブルとSUBSTRING...
-
[Oracle] UPDATE分の副問い合わ...
-
ACCESS 一つのフィールドに複...
-
PLSQLの識別子エラー
-
場合によって条件を変えるSQL
-
Sheet1$が存在致しませんとエラー
-
3つのテーブルから条件に一致し...
-
下記のsqlで取得されるレコード...
-
社内コードをソースコードに直...
-
主キーの変更
-
ACCESS2000でDCount関数の使い方
-
access初心者です。 アパレル...
-
Accessでフィールドを比較した...
-
行方向のデータを横に並べる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
ACCESS 一つのフィールドに複...
-
PLSQLの識別子エラー
-
主キーの変更
-
Accessでフィールドを比較した...
-
SQL 2つのテーブルとSUBSTRING...
-
続.ORACLEのSELECTのソートに...
-
行方向のデータを横に並べる
-
下記のsqlで取得されるレコード...
-
VIEWでテーブルの集計結果...
-
update文で質問です。 下記の条...
-
[Oracle] UPDATE分の副問い合わ...
-
片方だけ抽出する方法(SQL)
-
自分自身への矢印
-
連番のMin, Maxを取得したい
-
Accessユニオンクエリーで2つ...
-
日付の最大値を検索条件にする方法
-
Inner join と Left joinの明...
おすすめ情報