2011-01-21 10 views
1

この問題に関する助けが必要です...正しい値の代わりに0を入力していたテーブルの列を更新する必要があります。何千もの項目があり、私はこれをPHPではなくSQLスクリプトを通して実行しようとしています。サブクエリを使用したMySQL UPDATEのヘルプ

例として、プレーヤーテーブルは列(playerID、teamID、cityID、およびstateID)で構成されています。スタジアムテーブルには(statiumID、teamID、cityID、stateID)があります。 Table2のcityIDは、いくつかの不正なコードで0に設定されていました。私はサブクエリでこれを解決することができますが、私は比較的新しい概念です。私は、次のを作ってみたが、私はそれが非常に最適化されていない感じを持っている:

UPDATE 
`database1`.`stadium` 
SET 
`stadium`.`cityID` = 
(
    SELECT 
     `player`.`cityID` 
    FROM 
     `database2`.`player` 
    WHERE 
     `player`.`teamID` = `stadium`.`teamID` 
    AND 
     `player`.`stateID` = `stadium`.`stateID` 
) 
WHERE 
`stadium`.`cityID` = 0; 

私はこの文が最適化されておらず、クリーンアップすることができ、かなり確信しています。どんな助けでも大いに感謝されるでしょう!!!!

答えて

2

と思ってください。

UPDATE 
    database1.stadium AS s 
INNER JOIN (
    SELECT DISTINCT teamID, stateID, cityID FROM database2.player 
) AS p 
USING (teamID, stateID) 
SET 
    s.cityID = p.cityID 
WHERE 
    s.cityID = 0 
関連する問題