Заполнение столбца данными из другого столбца в той же таблице - PullRequest
2 голосов
/ 16 марта 2019

Я новичок в SQL, и это, вероятно, довольно просто, но я не могу понять, как заставить его работать.

Я пытаюсь заполнить столбец данными, извлеченными из другого столбца в той же таблице ..в этом случае это баскетбольная база данных с оценками боксов, и я пытаюсь заполнить столбец очков противника (opp_pts), чтобы соответствовать тому, что набрал их противник в этой игре.каждая игра соответствует сезонному и игровому.

вся таблица составляет около 700 строк с несколькими сотнями игр и около 40 команд, но образец ниже ... это пример одной игры, где счет был 84-81, но я хочу заполнить opp_team_statsс соответствующим счетом

season_id   game_id   team_id     team_pts      opp_team_pts    
  U2018       140    U2018_19      84.0                         
  U2018       140    U2018_23      81.0           

Я пытался, но смог заполнить только весь столбец opp_team_pts с 84, что, очевидно, неверно

UPDATE box_scores 
SET opp_team_pts = (SELECT box_scores.team_pts
FROM box_scores
WHERE box_scores.season_id=box_scores.season_id AND box_scores.game_id=box_scores.game_id);

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

1 Ответ

1 голос
/ 16 марта 2019

Предполагая, что в каждой игре ровно две команды, вы можете использовать коррелированный подзапрос:

UPDATE box_scores
    SET opp_team_pts = (SELECT bs2.team_pts
                        FROM box_scores bs2
                        WHERE bs2.season_id = box_scores.season_id AND
                              bs2.game_id = box_scores.game_id AND
                              bs2.team_id <> box_scores.team_id
                       );

SQLite не поддерживает FROM в операторе UPDATE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...