mysql – 使用另一个表中的值更新表

前端之家收集整理的这篇文章主要介绍了mysql – 使用另一个表中的值更新表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有这些表:

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中的当前值填充invoice.vat_number中的NULL值.是否可以使用单个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;
最佳答案
使用MysqL,ANSI-92 JOIN语法:

UPDATE INVOICE
  JOIN CUSTOMER ON CUSTOMER.customer_id = INVOICE.customer_id
   SET vat_number = CUSTOMER.vat_number  
 WHERE INVOICE.vat_number IS NULL

使用MysqL,ANSI-89 JOIN语法:

UPDATE INVOICE,CUSTOMER 
   SET INVOICE.vat_number = CUSTOMER.vat_number  
 WHERE CUSTOMER.customer_id = INVOICE.customer_id
   AND INVOICE.vat_number IS NULL

对于more info,see the MySQL UPDATE documentation.这是MysqL特定的UPDATE语句语法,不太可能在其他数据库上受支持.

猜你在找的MySQL相关文章