首页 > 解决方案 > 查询只更新一行而不是全部

问题描述

查询说明:有两张表,Invoice和temp。我需要根据发票号码从临时表中获取邮政编码并将它们推送到发票表。

询问:

UPDATE 
Invoice
SET 
Invoice.zip_code = (SELECT zip_code FROM temp WHERE Invoice.invoice_number = temp.invoice_number)
WHERE 
Invoice.invoice_date >= '2017-08-01';

运行查询后,我的临时表中有 3 张发票 在此处输入图像描述 ,仅更新了发票 693459 在此处输入图像描述

标签: mysql

解决方案


您的查询不会完成这项工作 - 因为它不是针对所有记录,而是仅对第一条记录应用一次。

UPDATE Invoice SET zip_code=Temp.zipcode
FROM Invoice INNER JOIN Temp ON
Invoice.invoice_number=Temp.invoice_number
WHERE invoice_date>='2017-08-01'

推荐阅读