这就是我的情况:
我基本上有要发送到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行答案。