我正在一个使用 opencart 的网站上工作,并将其设置为自动从两个不同的批发商导入产品。该数据库包含大约 40,000 种不同的产品,其中大约 10,000 种是重复的(都带有该产品)。
我需要查找所有重复的产品(通过 UPC)并启用价格较低的产品。
该表称为“产品”,具有列 product_id、upc、price、status 和其他不相关的列。
我的第一次尝试是运行以下查询
SELECT DISTINCT (
upc
) AS upcDuplicate, COUNT( upc ) AS upcCount
FROM product
GROUP BY upc
HAVING upcCount >1
这给了我所有重复产品的列表,然后我将在 php 中遍历这些 upcs 并运行
UPDATE product SET status=1 WHERE upc='CURRENTUPC' ORDER BY price ASC LIMIT 1
这将使价格最低的那个。
这行得通,但看起来它是如何依赖 php 来运行 10,000 个不同的 mysql 查询的。有什么方法可以将其放入单个查询中,或者至少是更有效的方法。