2011-11-16 37 views
3

私はこれが簡単だと知っていますが、私は精神的なブロックを持っています。mysql update with join

カテゴリに属する​​すべての製品を更新する必要があります。製品は関連テーブルのカテゴリに割り当てられます。

ので、それは良い方法がある

UPDATE product P1 
SET myflag = 1 
WHERE P1.productid IN (
    SELECT CA.productid 
    FROM category_associations CA 
    WHERE CA.categoryid = '500' 
) 

のようなものですか?

答えて

4

JOINは通常、最適な実行計画を持っていますが、INは非効率的であることができます。それを書くために

UPDATE 
    product P1 JOIN 
    category_associations ca 
     ON ca.productId = P1.productId 
     AND ca.categoryId = '500' 
SET P1.myflag = 1 
+0

おかげで、それは私が望んだ、結合構文更新は私に言いました。 – sdfor

0

別の方法は次のとおりです。

UPDATE product 
SET myflag = 1 
FROM product P1 JOIN 
    category_associations ca 
     ON ca.productId = P1.productId 
WHERE ca.categoryId = '500'