2011-01-21 3 views
1

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

В качестве примера таблица игроков состоит из столбцов (идентификатор игрока, teamID, cityID и идентификатор состояния). Стол стадиона имеет (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; 

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

ответ

2

I думаю вы хотите что-то вроде этого.

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 
Смежные вопросы