que tienen estas tablas:Actualización de la tabla con valores de otra tabla
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
Quiero llenar los valores NULL en invoice.vat_number
con los valores actuales de customer.vat_number
. ¿Es posible hacerlo con una sola instrucción SQL?
Lo que tengo hasta ahora desencadena un error de sintaxis:
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;
Eso es todo: ACTUALIZAR + UNIR + CONFIGURAR. Es difícil de detectar en el manual aunque, ahora sé cómo se hace, es obvio ... Muchas gracias –
"SINTAGIA ANSI-92 UNIR" es engañosa. La sintaxis publicada no es correcta. cumple con ANSI-92: no permite un JOIN en absoluto, requiere el uso de subconsultas escalares, por ejemplo, 'UPDATE INVOICE SET_vat_number = (SELECCIONAR ID_cliente FROM CLIENTE DONDE CLIENTE.Nivel_personalizado = INVOICE.número_cliente) DONDE EXISTE (SELECCIONAR * DESDE EL CLIENTE DONDE COINCIDE MER.customer_id = INVOICE.customer_id); ' – onedaywhen
... señalando que más tarde señala que es una sintaxis patentada. – onedaywhen