Mysql 是否可以使用';加入';在重复密钥更新时插入
我正在尝试更改代码,因此当Mysql 是否可以使用';加入';在重复密钥更新时插入,mysql,join,insert,Mysql,Join,Insert,我正在尝试更改代码,因此当webshop\u stock中没有匹配的ean13行时,它需要插入一个新行 MYSQL目前不接受我的代码。为了让它工作,我尝试了一些方法。我在万维网上的搜索没有找到一个关于插入到-JOIN-on重复密钥更新的好例子。所以我的问题是,这可能吗 现在的问题是,我的行在不存在时被创建,但存在的行不会被更新 测试了以下代码: INSERT INTO webshop_stock (id_warehouse,id_product,id_product_attribute,
webshop\u stock
中没有匹配的ean13
行时,它需要插入一个新行
MYSQL目前不接受我的代码。为了让它工作,我尝试了一些方法。我在万维网上的搜索没有找到一个关于插入到-JOIN-on重复密钥更新的好例子
。所以我的问题是,这可能吗
现在的问题是,我的行在不存在时被创建,但存在的行不会被更新
测试了以下代码:
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
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 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
您需要一个
选择。普通插入没有连接功能insert。。。选择。。。加入
works<代码>插入。。。join
是非法语法。但mysql不接受我的测试代码
-它是出错了还是根本没有做你期望的事情?报告错误时请说明,“不工作”不是我们告诉对方错误的方式。目前它没有给出错误,代码如下。它在行不存在时插入,但在行存在时不更新。