Помогите с MySQL UPDATE с подзапросом - PullRequest
1 голос
/ 21 января 2011

Нужна помощь с этим ... Мне нужно обновить столбец в одной из моих таблиц, который заполнялся 0 вместо правильного значения. Там тысячи записей, и я хочу попытаться сделать это с помощью сценария SQL, а не PHP.

Например, таблица игрока состоит из столбцов (playerID, teamID, cityID и stateID). таблица стадиона имеет (statiumID, teamID, cityID и stateID). CityID в таблице 2 был установлен в 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;

Я вполне уверен, что это утверждение не оптимизировано и может быть исправлено. Любая помощь будет принята с благодарностью !!!!

1 Ответ

2 голосов
/ 21 января 2011

Я думаю вы хотите что-то подобное.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...