需要一些帮助...我需要在我的一个表中更新一个列,其中填充了0而不是正确的值。有成千上万的条目,我想通过SQL脚本而不是PHP来尝试这样做。
例如,播放器表由列(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;
我很确定这个声明没有优化,可以清理。任何帮助将不胜感激!!!!
答案 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