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: