2011-06-29 15 views
1

テーブルの特定のカラムを別のテーブルのカラムのデータで更新しようとしています。私は、以下のコマンドを実行してみましたが、私はあなたがUPDATE文でFROMを使用することはできませんMySQLの更新ステートメント

UPDATE af_application af 
SET application_price=rss.application_price 
FROM rss_applications rss 
WHERE af.application_id=rss.application_id 

答えて

4
UPDATE af_application af, rss_applications rss 
SET application_price=rss.application_price 
WHERE af.application_id=rss.application_id 
+0

ありがとう、それは働いたが、それは本当に遅いです。なぜなのかご存知ですか? – David

+0

@David: 'application_id'は' rss_applications'テーブルのインデックスでカバーされていますか?更新される行の数 – zerkms

+0

'index'はどういう意味ですか? 'application_id'が主キーであるかどうかを指していますか?もしそうなら、 'application_id'がテーブルの主キーになるように設定されています。 〜6000レコードだけが更新されます。 – David

3

ライン3で構文エラーを取得しています。代わりにJOINを使用します。

UPDATE af_application af 
JOIN rss_applications rss 
ON af.application_id=rss.application_id 
SET af.application_price=rss.application_price 

詳細については、http://dev.mysql.com/doc/refman/5.0/en/update.htmlhttp://dev.mysql.com/doc/refman/5.0/en/join.htmlを参照してください。

+0

私はあなたの提案を試して、3行目の 'JOIN ... 'で構文エラーが発生しました – David

+0

@David - 申し訳ありませんが、私は誤って 'SET'と' JOIN'を逆転しました!私は答えを更新しました:遅い場合、両方のテーブルの 'application_id'フィールドにインデックスがあることを確認してください。 –

+0

助けてくれてありがとう。 – David

関連する問題