是否可以在 INSERT ON DUPLICATE KEY UPDATE 中使用 'join'
Is it possible to use 'join' in INSERT ON DUPLICATE KEY UPDATE
我正在尝试更改我的代码,因此当 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 <table> <field list>
SELECT ... JOIN ...
mysql中没有INSERT JOIN SELECT
。这是 INSERT SELECT JOIN
.
已解决这段代码满足了我的需要。
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
我正在尝试更改我的代码,因此当 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 <table> <field list>
SELECT ... JOIN ...
mysql中没有INSERT JOIN SELECT
。这是 INSERT SELECT JOIN
.
已解决这段代码满足了我的需要。
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