我是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);
我确定代码可能是多余的,但是就我所知,我理解为什么它会像以前那样填充,但似乎无法弄清楚如何解决它……我可能正在路线错误,但希望能对您有所帮助
答案 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
。