mam tych tabel:Aktualizacja tabeli z wartościami z innej tabeli
customer:
customer_id vat_number
=========== ==========
1 ES-0000001
2 ES-0000002
3 ES-0000003
invoice:
invoice_id customer_id vat_number
========== =========== ==========
100 1 NULL
101 3 NULL
102 3 NULL
103 2 NULL
104 3 NULL
105 1 NULL
Chcę wypełnić wartości NULL w invoice.vat_number
z aktualnymi wartościami z customer.vat_number
. Czy można to zrobić za pomocą pojedynczego polecenia SQL?
Co mam tak daleko wyzwala błąd składni:
UPDATE invoice
SET vat_number=cu.vat_number /* Syntax error around here */
FROM invoice iv
INNER JOIN customer cu ON iv.customer_id=cu.customer_id
WHERE invoice.invoice_id=iv.invoice_id;
To wszystko: UPDATE + JOIN + SET. Trudno wyłowić z instrukcji, chociaż teraz wiem, jak to się robi, to oczywiste ... Bardzo dziękuję –
"ANSI-92 JOIN syntax" jest mylące. Zgodny z ANSI-92: w ogóle nie zezwala na JOIN, wymaga użycia podzapytań skalarnych, np. 'UPDATE INVOICE SET vat_number = (WYBIERZ customer_id OD KLIENTA GDZIE KLIENT.customer_id = INVOICE.customer_id) GDZIE ISTNIEJE (WYBIERZ * OD KLIENTA GDZIE CUSTO MER.customer_id = INVOICE.customer_id); ' – onedaywhen
... zauważając, że później zaznaczyłeś, że jest to zastrzeżona składnia. – onedaywhen