MySQL更新查询无法正常工作

时间:2018-08-17 16:11:50

标签: mysql

我收到一条通用错误消息,不知道查询出了什么问题。我该怎么解决?

查询说明:有两个表,发票和临时表。我需要从临时表中提取邮政编码,然后根据发票号将其推送到发票表中。

START TRANSACTION

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

ROLLBACK

这是错误:

  

错误代码:1064您的SQL语法错误;检查   与您的MySQL服务器版本相对应的手册   在'UPDATE Invoice SET Invoice.zip_code =(SELECT   zip_code FROM temp WHERE temp'在第3行

2 个答案:

答案 0 :(得分:1)

在每个命令后添加分号。

START TRANSACTION;

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

ROLLBACK;

答案 1 :(得分:0)

@Daniel Blais这样的声音是对的。解决问题的一件事是分解查询并单独运行每个部分。这将帮助您找出问题所在。

SELECT zip_code FROM temp WHERE temp.invoice_number = Invoice.invoice_number;

另一个问题:为什么在更新表后回滚?您不想提交吗?