插入重复键更新会出现错误1064

时间:2017-07-05 08:54:24

标签: mysql mysql-error-1064 on-duplicate-key

我正在尝试使用此查询,但无论我做什么,我无法让它工作。我对重复密钥更新语法仍然很新,但我发现它没有任何问题

INSERT INTO product_leverancier (product_id, leverancier_id, prijs) 
SELECT i.product_id, i.leverancier_id, i.prijs FROM import_tbl i 
ON DUPLICATE KEY UPDATE product_id=VALUES(product_id), 
leverancier_id=VALUES(leverancier_id), prijs=VALUES(prijs)

我得到的错误是:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第2行的'UPDATE product_id = VALUES(product_id),leverancier_id = VALUES(leverancier_id),pr'附近使用正确的语法   错误代码1064。

无论我改变什么,它总是相同的错误和错误代码。 知道问题是什么吗?

2 个答案:

答案 0 :(得分:0)

您的语法有点偏离,我不相信在使用VALUES作为插入源时使用SELECT。而是将该源表用于更新值:

INSERT INTO product_leverancier (product_id, leverancier_id, prijs) 
SELECT i.product_id, i.leverancier_id, i.prijs
FROM import_tbl i 
ON DUPLICATE KEY UPDATE
    product_id     = i.product_id, 
    leverancier_id = i.leverancier_id,
    prijs          = i.prijs

请注意,在引用源表中的列时,需要别名i

这是一个很好的参考问题,可以更深入地研究ON DUPLICATE KEY UPDATEINSERT INTO ... SELECT一起使用时的语法:

INSERT INTO ... SELECT FROM ... ON DUPLICATE KEY UPDATE

答案 1 :(得分:0)

你试过这个吗?

ON DUPLICATE KEY UPDATE 
    product_leverancier.product_id = i.product_id, 
    product_leverancier.leverancier_id = i.leverancier_id,
    product_leverancier.prijs = i.prijs