我正在尝试使用此查询,但无论我做什么,我无法让它工作。我对重复密钥更新语法仍然很新,但我发现它没有任何问题
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。
无论我改变什么,它总是相同的错误和错误代码。 知道问题是什么吗?
答案 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 UPDATE
与INSERT INTO ... SELECT
一起使用时的语法:
答案 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