我試圖改變我的代碼,所以當在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