2011-01-21 87 views
1

需要一些幫助,這個...我需要更新我的一個表中的一列,而不是正確的值填充0。有成千上萬的條目,我想通過一個SQL腳本而不是PHP來做到這一點。幫助MySQL更新與子查詢

作爲示例,玩家表由列(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