UPDATE dotaz, který zobrazíte, je přesně stejný jako:
UPDATE fromemailaddress f
SET call = true
FROM (
SELECT fromemailaddress
FROM email
WHERE subject ILIKE '%tester%'
) e
WHERE e.fromemailaddress = f.fromemailaddress;
subject ILIKE '%tester%' je rychlejší ekvivalent pro subject ~ 'tester' . Podrobnosti pro ILIKE , ILIKE a shoda regulárních výrazů (~ ) v příručce
nebo v této související odpovědi na dba.SE:
A to efektivně stejně jako:
UPDATE fromemailaddress f
SET call = true
WHERE EXISTS (
SELECT 1
FROM email e
WHERE e.fromemailaddress = f.fromemailaddress
AND e.subject ILIKE '%tester%'
);
Použijte místo toho toto.
Pokud má tabulka obsahovat více řádků email se stejnou fromemailaddress odpovídající řádku v fromemailaddress , pak tento formulář provede pouze jeden aktualizace na řádek, na rozdíl od vašeho nešťastného originálu.
Nenechte se zmást tím, že fromemailaddress se zde používá jako název sloupce a tabulky.
Přečtěte si pozorně příručku zde a zde . Konkrétně tento bit: