UPDATE
kueri yang Anda tampilkan sama persis dengan:
UPDATE fromemailaddress f
SET call = true
FROM (
SELECT fromemailaddress
FROM email
WHERE subject ILIKE '%tester%'
) e
WHERE e.fromemailaddress = f.fromemailaddress;
subject ILIKE '%tester%'
adalah padanan yang lebih cepat untuk subject ~ 'tester'
. Detail untuk LIKE
, ILIKE
dan pencocokan ekspresi reguler (~
) dalam manual
atau dalam jawaban terkait ini di dba.SE:
Dan secara efektif sama dengan:
UPDATE fromemailaddress f
SET call = true
WHERE EXISTS (
SELECT 1
FROM email e
WHERE e.fromemailaddress = f.fromemailaddress
AND e.subject ILIKE '%tester%'
);
Gunakan ini sebagai gantinya.
Jika harus ada beberapa baris dalam tabel email
dengan fromemailaddress
yang sama mencocokkan baris di fromemailaddress
, maka formulir ini hanya mengeksekusi satu perbarui per baris, tidak seperti aslinya yang malang.
Jangan bingung dengan fakta bahwa fromemailaddress
digunakan sebagai kolom dan sebagai nama tabel di sini.
Baca manual dengan seksama di sini dan di sini . Khususnya bagian ini: