Stejné jako platné UPDATE
prohlášení v Postgres:
UPDATE incode_warrants iw
SET warn_docket_no = iv.viol_docket_no
FROM incode_warrantvs iwvs
JOIN incode_violations iv ON iv.viol_citation_no = iwvs.warnv_citation_no
AND iv.viol_viol_no = iwvs.warnv_viol_no
WHERE iw.warn_rid = iwvs.warnv_rid;
-- AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no -- see below
Nemůžete použít pouze alias tabulky v FROM
klauzule jako cílová tabulka v UPDATE
doložka. (jedna!) tabulka, která má být aktualizována, přichází hned po UPDATE
klíčové slovo (pokud ignorujeme možné ONLY
klíčové slovo mezi nimi). Pokud chcete, můžete tam přidat alias. To je bezprostřední příčina vaší chybové zprávy, ale je toho víc.
Sloupec, který má být aktualizován, je vždy z jedné tabulky, která má být aktualizována, a nelze jej kvalifikovat pro tabulku.
Není třeba opakovat cílovou tabulku v FROM
klauzule - kromě speciálních případů, jako je tento:
Tento volitelný doplněk může zabránit zbytečným nákladům tím, že potlačí aktualizace, které nic nemění:
AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no
Viz:
Více ve skvělé příručce na UPDATE
.