我正在尝试更改我的代码,因此当 webshop_stock
中没有匹配 ean13
的行时,它需要 INSERT
一个新行.
MYSQL 目前不接受我的代码。为了让它发挥作用,我尝试了一些方法。我在全局网络上的搜索没有找到 INSERT INTO - JOIN - ON DUPLICATE KEY UPDATE
的好示例。所以我的问题是,这可能吗?
此时的问题是,当我的行不存在时,它们会被创建,但存在的行不会被更新。
测试了以下代码:
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
原始代码:
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
最佳答案
已解决此代码满足我的需要。
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
ON DUPLICATE KEY UPDATE
physical_quantity = ai.quantity, usable_quantity = ai.quantity
关于mysql - 是否可以在 INSERT ON DUPLICATE ON DUPLICATE KEY UPDATE 中使用 'join',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28353382/