※ ChatGPTを利用し、要約された質問です(原文:複雑なUPDATE文)
PostgresV7.3.4での複雑なUPDATE文の実装方法と注意点
このQ&Aのポイント
PostgresV7.3.4での複雑なUPDATE文の実装方法と注意点について説明します。
特定の条件に一致する行の列を更新するUPDATE文の書き方や、条件式の設定方法について解説します。
また、UPDATE文の実行時に注意すべきポイントも紹介します。
少し複雑なUPDATEをしているのですが、うまくいかず困っています。
お知恵を拝借いただけると助かります。
使用バージョンはPostgresV7.3.4です。
tableA
a |b |c
-+-+-
1 | 1 | 1 (★)
1 | 0 | 1
1 | 0 | 2
2 | 1 | 0
2 | 0 | 1
3 | 1 | 1 (★)
3 | 0 | 1
3 | 0 | 2
b=1 and c=1 で一致する行を★行とする。
★行のa列の値(上記の例だとa=1,a=3)をもつ行に対して
下記の条件◆でUPDATEを行う。
[条件◆]
b=0 and c=1
[UPDATEの内容]
条件◆に一致したc列を3に更新する
[理想の結果]
tableA
a |b |c
-+-+-
1 | 1 | 1
1 | 0 | 3 ●更新
1 | 0 | 2
2 | 1 | 0 ←★にあてはまらないので更新されない
2 | 0 | 1
3 | 1 | 1
3 | 0 | 3 ●更新
3 | 0 | 2
==========================================
★の条件を考えない場合は、下記予想します。
UPDATE tableA set c = 3
WHERE 条件◆
★の条件を考えた時、どのような条件にすればよいかさっぱり分かりません。
ご協力下さい。
==========================================
お礼
解決しました。 IN演算子にSLECTを入れるのですね。 IN演算子には固定値しか入れられないものだと勘違いしておりました。 ありがとうございます。