私のUPDATEステートメントは、の線に沿って行く:SQL - CASE文で更新すると、同じCASEを何度も繰り返す必要がありますか?
UPDATE customer
SET forenames=ot.forenames,
surname =
CASE WHEN ot.safeplace IS NULL
THEN 'test SAFEPLACE IS NULL'
ELSE 'test Safeplace IS NOT NULL'
END,
middlename =
CASE WHEN ot.safeplace IS NULL
THEN 'test2 SAFEPLACE IS NULL'
ELSE 'test2 Safeplace IS NOT NULL'
END,
FROM order_transaction ot
WHERE customer.custid = ot.custid
AND ot.trans_orderid = 5678
AND customer.custid = 1234
上記の作品を。基本的には、別のテーブルのフィールドがNULLかどうかをチェックし、それに応じて顧客の "姓"と "middlename"を更新します。上記のように、私は同じCASEステートメントを2回繰り返しました。私の質問です - 私は1回だけCASEステートメントを指定する方法はありますか?
特定の条件に基づいて10個のフィールドを更新したい場合、10個の同様のCASE条件を含める必要がありますか?あるいは、WHEN/ELSE句内に1つのCASEと10個のフィールド更新を持つようにSQLを改善することはできますか?
(私はPostgreSQL 8.2データベースを使用していますが、上記は標準SQLと思われます)。
多くのおかげで、 リシ
本当に最高のリチャードRichard。選択したテーブルが最初にテーブルをスキャンして結果を追加した後、それをフィルタリングします。 –
@Dumitrescu Bogdan /私はそうは思わない。 PostgreSQLはサブクエリにフィルタを適用するためにクエリを展開するので、定義済みの(計算された)カラムを使用する能力は保持されます – RichardTheKiwi
OPの構文は標準SQLではありません(SQL標準は国際標準であり、 'ANSI'は 'American'の略ですので、ここでは「ISO準拠のSQL」がより適切でしょう:) – onedaywhen