2013-01-22 69 views
0

我使用以下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

[請不要使用'mysql_ *'函數](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php#answer-12860140)。 –

+0

'JOIN'也適用於'UPDATE'。心連心 –

回答

2

你可以有一個子查詢中update,如:如果你對價格指數(產品,價格)

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

這將很大跑得更快。