用同一表中另一列的数据填充列

时间:2019-03-16 14:47:31

标签: sql sqlite sql-update

我是SQL的新手,这可能很容易,但是我不知道如何使它工作。

我试图用从同一张桌子的另一列中提取的数据来填充一列。在这种情况下,它是一个篮球得分框的数据库,我试图用对手得分(opp_pts)来填充列以匹配他们的得分对手得分。每个游戏都由season_id和game_id匹配。

整个表大约有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           

我已经尝试过,但是只能用84填充opp_team_pts的整个列,这显然是不正确的

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 个答案:

答案 0 :(得分:1)

假设每个游戏正好有两个团队,则可以使用相关的子查询:

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

相关问题