在纯mysql而不是php中批量更新?

时间:2013-01-22 01:52:41

标签: php mysql

我使用以下php代码将产品的最低价格从“价格”表格放到“产品”表格中。

我有大约10,000种产品,每种产品价格超过500,因此任务非常苛刻。

是否可以在没有任何php代码的单个mysql查询中执行此操作?

 $last_year_date = date("Y-m-d",strtotime('first day of last year'));

 for ($i=1; $i<=10000; $i++){ 

 $query_min_p = "SELECT min(price) as min FROM prices WHERE (product_id = {$i} AND price > 0 AND price_date >= '".$last_year_date."' )";
 $result_min_p = mysql_query($query_min_p);

        while($row = mysql_fetch_array($result_min_p)){
             if ($row['min'] > 0 ){
                $query = "UPDATE products SET min_p = '".$row['min']."' WHERE (product_id = {$i})";
                $result = mysql_query($query);                 
             }
        }

  }

1 个答案:

答案 0 :(得分:2)

您可以在update中使用子查询,如:

update products
    set min_p = (select min(price) from prices where prices.product_id = product.product_id)

如果您有价格指数(product_id,price),这将会更快地运行。