我将如何操作:INSERT ... ON DUPLICATE KEY ....如果KEY为NULL INSERT NOT UPDATE

时间:2019-01-04 06:55:12

标签: php mysql

这就是我的情况:

我基本上有要发送到API的UPC列表,这些UPC可以转换为Amazon的ASIN格式并获取商品价格。该API可以返回3件事:1)我以前从未使用过的新ASIN及其价格,2)我可以在其中更新价格的旧ASIN,或3)不匹配并返回NULL。

有成千上万的此类UPC,我在API上每小时受到大约1000个请求的限制,因此我给它们加了时间戳,以便首先重新运行最旧的或新的UPC。

这是我拥有的:

一个表,该表在ogID上具有主键,在ASIN上具有唯一键,并且该语句->

INSERT INTO `m01AmazonMine` (
        `ogID`,
        `UPC`,
        `ASIN`,
        `lowestAmazonPrice`,
        `timestamp`
    ) VALUES (
        NULL, 
        '{$prodId}', 
        '{$ASIN}',  
        {$lowestPrice['newAmazon']},
        CURRENT_TIMESTAMP
    )
    ON DUPLICATE KEY UPDATE
        UPC                 =   '{$prodId}', 
        ASIN                =   '{$ASIN}',  
        lowestAmazonPrice   =   {$lowestPrice['newAmazon']},
        `timestamp`         =    CURRENT_TIMESTAMP
    ;

问题是我的第48个条目的ASIN为NULL;因此,每个其他返回NULL ASIN的UPC都会覆盖第48个NULL条目。但是我需要它来创建一个新的空条目,以便基本上只是记录它尝试过该UPC,并且直到它使用了一周左右才再次尝试它。有解决问题的人可以解决这个问题吗?

我知道我可以只编写一个PHP if语句来分析ASIN。如果为null,请执行插入操作。如果其不为null,请在重复键更新上运行insert...。但是我正在寻找单个sql行答案。

0 个答案:

没有答案