我正在创建一个篮球统计数据库,并在SQL中有一个表格,其中包含来自所有游戏的玩家总数。但是,我在添加它时遇到了麻烦。我为每个游戏使用临时表,然后我需要将所有临时值添加到玩家的总表中。我该怎么做?我尝试了很多方法,每个方法都会产生错误。以下是一些:
(live_players是临时表,这里我只是尝试加入点列。)
db.execute("UPDATE players JOIN live_players AS t1 ON players.player_id
= t1.player_id SET points = points + t1.points")
db.execute("MERGE INTO players USING live_players ON players.player_id
= live_players.player_id WHEN MATCHED THEN UPDATE
SET points = points + live_players.points")
答案 0 :(得分:0)
这应该会给你player_id并为live_players中的记录指向新的(不确定是否可能)或在玩家表中有匹配的记录,以及当玩家当前存在时添加的那些点:
SELECT ST1.player_id, case when ST2.points > 0 THEN ST1.points+ST2.points Else ST1.points END as test FROM live_players ST1 LEFT JOIN players ST2 USING(player_id)
将其与UPDATE
操作集成,取决于我们的播放器表的唯一索引,应该可以满足您的需求。
答案 1 :(得分:0)
我认为你的更新声明是错误的。
您不必在update语句后面直接进行连接,必须将其放入FROM子句中。
UPDATE table_to_update
SET what_you_want_to_set
FROM define_the_table(s)
WHERE some_restrictions (maybe with sub select)
看看这里:
How can I do an UPDATE statement with JOIN in SQL?
或在这里:
最佳,
我