使用另一个表中的值更新表
我有这些表:
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
我想用 customer.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;
I have these tables:
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
I want to fill the NULL values at invoice.vat_number
with the current values from customer.vat_number
. Is it possible to do it with a single SQL statement?
What I have so far triggers a syntax error:
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;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用 MySQL,ANSI-92 JOIN 语法:
使用 MySQL,ANSI-89 JOIN 语法:
对于 更多信息,请参阅 MySQL UPDATE 文档。这是 MySQL 特定的 UPDATE 语句语法,其他数据库不太可能支持。
Using MySQL, ANSI-92 JOIN syntax:
Using MySQL, ANSI-89 JOIN syntax:
For more info, see the MySQL UPDATE documentation. This is MySQL specific UPDATE statement syntax, not likely to be supported on other databases.
在这里
SET vat_number=cu.vat_number /* 这里有语法错误 */
该错误是因为 var_number 列名称不明确 - MySQL 不知道这是 i.vat_number 还是 cu,vat_number。
Here you go
SET vat_number=cu.vat_number /* Syntax error around here */
The error is because the var_number column name is ambiguous - MySQL does not know if this is i.vat_number or cu,vat_number.
像这样的东西:
Something like :