我试图改变我的代码,所以当在webshop_stock中没有匹配的“ean13”的行时,它必须插入。是否有可能在INSERT ON DUPLICATE KEY UPDATE中使用'join'
但是mysql不接受我测试过的代码,为了得到它,我尝试了几件事情。我在谷歌的搜索,我没有找到一个工作示例与“插入 - 加入 - 重复密钥更新”,这是可能的吗?
现在的问题是我的行在不存在时被创建,但存在的行不会被更新。
测试了以下的代码:
$get_input = "
INSERT INTO webshop_stock
(id_warehouse,id_product,id_product_attribute,ean13, physical_quantity, usable_quantity)
SELECT
'1',
pa.id_product,
pa.id_product_attribute,
pa.ean13,
ai.quantity,
ai.quantity
FROM
webshop_product_attribute pa,
Adcount_input ai
WHERE
pa.ean13 = ai.ean13
AND NOT EXISTS
(SELECT id_product_attribute FROM webshop_stock WHERE id_product_attribute = pa.id_product_attribute)
ON DUPLICATE KEY UPDATE
physical_quantity = ai.quantity,
usable_quantity = ai.quantity
";
原始代码:
$get_input = "
UPDATE
webshop_stock AS s
JOIN(
SELECT
pa.ean13,
pa.id_product_attribute,
pa.id_product,
ai.quantity
FROM
webshop_product_attribute pa,
Adcount_input ai
WHERE
pa.ean13=ai.ean13) q
SET
s.id_warehouse = 1,
s.id_product = q.id_product,
s.id_product_attribute = q.id_product_attribute,
s.ean13 = q.ean13,
s.physical_quantity = q.quantity,
s.usable_quantity = q.quantity
WHERE
s.id_product_attribute = q.id_product_attribute";
'但是mysql不接受我测试过的代码' - 是不是出错了,还是根本没有做到你期望的那样?报告错误时请说明性,“不工作”不是我们如何告诉对方出了什么问题。 – 2015-02-05 22:44:03
目前它不给出任何错误,代码如下。它在行不存在时插入,但在行存在时不更新。 – Crezzur 2015-02-06 08:45:58