私は opencart を使用して Web サイトに取り組んでおり、2 つの異なる卸売業者から製品を自動的にインポートするように設定しています。データベースには約 40,000 の異なる製品が含まれており、そのうちの約 10,000 が重複しています (両方とも製品を扱っています)。
重複するすべての製品を (UPC で) 検索し、低価格の製品を有効にする必要があります。
このテーブルは「product」と呼ばれ、product_id、upc、price、status などの関係のない列があります。
私の最初の試みは、次のクエリを実行することでした
SELECT DISTINCT (
upc
) AS upcDuplicate, COUNT( upc ) AS upcCount
FROM product
GROUP BY upc
HAVING upcCount >1
これにより、すべての重複製品のリストが得られたので、それらの upcs を php でループして実行します。
UPDATE product SET status=1 WHERE upc='CURRENTUPC' ORDER BY price ASC LIMIT 1
これにより、最低価格のものが有効になります。
これは機能しますが、10,000 の異なる mysql クエリを実行するために php に依存していることは非常に非効率的です。これを単一のクエリに入れる方法、または少なくともより効率的な方法はありますか。