2016-11-12 3 views
1

私はSQLに新しいので、他の同様の質問をうまく利用できませんでした。テーブルが2回指定されているため、SQLはUPDATEクエリを実行できません

私は、同じ家を共有するすべての人に30%の割引を与えようとしているので、ID、価格、家の名前のテーブルがあります。

これは私のクエリた:

UPDATE person 
SET price= price*0.97 
WHERE house IN (SELECT p.house FROM person p GROUP BY p.house HAVING COUNT(*) >2); 

それは「表が 『UPDATE』の対象として、データのための別のソースとしても、二回指定されている」と言うが、私は、文字列を保存するための他の方法を知りません他の声を比較する。

どうすればよいですか?

答えて

2

これはMySQLの制限です。

UPDATE person p JOIN 
     (SELECT p.house 
     FROM person p 
     GROUP BY p.house 
     HAVING COUNT(*) > 2 
     ) ph 
     ON p.house = ph.house 
    SET p.price = p.price * 0.97; 

JOIN代わりINオペレータのフィルタリングを行います。この溶液をJOIN使用することです。

関連する問題