mysql - 是否可以在 INSERT ON DUPLICATE ON DUPLICATE KEY UPDATE 中使用 'join'

标签 mysql join insert

我正在尝试更改我的代码,因此当 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/

相关文章:

php - 按元数据的值对用户进行排序

mysql - 如何检查 MySQL 数据库备份是否过时

mysql - 有关将 MYSQL DB 及其数据从拉丁语转换为 UTF-8 的详细说明。那里有太多差异信息

php - Codeigniter 事件记录查询已缓存 - 查找旧表名而不是新表名

MYSQL - 如何优化 3 个 LEFT 连接表?

javascript - 当用户选择 radio 时,将属性插入到输入字段

arrays - 具有可选子集的无序集(数组)上的匹配表

sql - 根据匹配的列从另一个表的列更新列

mysql - 如何编写脚本来循环 SQL 条目并插入值?

c++ - 实现手写动态数组的插入数组方法 - C++