UPDATE
表示するクエリは次とまったく同じです:
UPDATE fromemailaddress f
SET call = true
FROM (
SELECT fromemailaddress
FROM email
WHERE subject ILIKE '%tester%'
) e
WHERE e.fromemailaddress = f.fromemailaddress;
subject ILIKE '%tester%'
subject ~ 'tester'
と同等の高速です 。 LIKE
の詳細 、ILIKE
および正規表現マッチング(~
)マニュアル
またはdba.SEのこの関連する回答:
そして効果的に と同じ:
UPDATE fromemailaddress f
SET call = true
WHERE EXISTS (
SELECT 1
FROM email e
WHERE e.fromemailaddress = f.fromemailaddress
AND e.subject ILIKE '%tester%'
);
代わりにこれを使用してください。
テーブルemail
に複数の行がある場合 同じfromemailaddress
fromemailaddress
の行と一致する 、このフォームは1つのみ実行されます 不幸なオリジナルとは異なり、行ごとに更新します。
fromemailaddress
という事実に惑わされないでください ここでは列およびテーブル名として使用されます。
マニュアルを注意深くお読みください