У меня есть эти таблицы:Обновление таблицы со значениями из другой таблицы
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
Я хочу, чтобы заполнить пустые значения в invoice.vat_number
с текущими значениями из customer.vat_number
. Можно ли это сделать с помощью одного оператора SQL?
То, что я до сих пор вызывает синтаксическую ошибку:
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;
Вот и все: UPDATE + JOIN + SET. Трудно заметить из руководства, хотя теперь я знаю, как это делается, это очевидно. Спасибо большое. –
«ANSI-92 JOIN синтаксис» вводит в заблуждение. совместимый с ANSI-92: не разрешает JOIN вообще, требует использования скалярных подзапросов, например 'UPDATE INVOICE SET vat_number = (SELECT customer_id FROM CUSTOMER WHERE CUSTOMER.customer_id = INVOICE.customer_id) ГДЕ СУЩЕСТВУЕТ (ВЫБРАТЬ * ОТ КЛИЕНТА ГДЕ КЛАСТ MER.customer_id = INVOICE.customer_id); ' – onedaywhen
... отметив, что вы позже указываете, что это проприетарный синтаксис. – onedaywhen