我正在尝试编写一个获取点的查询,给予匹配事件中的玩家,将其乘以另一列然后再乘以3,然后将结果复制到玩家已经存在的玩家表中。 有一个错误,但我找不到什么是错的。请解决这个问题,请帮助我吗?
UPDATE
j7yh8_bl_match_events,
j7yh8_bl_players
SET
j7yh8_bl_players.player_points = SELECT COUNT(j7yh8_bl_match_events.e_id) * j7yh8_bl_match_events.ecount * 3,
WHERE
j7yh8_bl_match_events.player_id = j7yh8_bl_players.id AND j7yh8_bl_match_events.e_id = 5;
任何帮助将不胜感激。
谢谢。
答案 0 :(得分:2)
在MySQL中,您可以join
使用update
。但是,任何聚合函数都必须在子查询中。
我并非100%确定该表达式用于计算点数。似乎这样的事情解决了你的问题:
UPDATE j7yh8_bl_players p LEFT JOIN
(SELECT me.player_id, SUM(me.ecount) * 3 as points
FROM j7yh8_bl_match_events me
WHERE me.e_id = 5
GROUP BY me.player_id
) me
ON me.player_id = p.id
SET p.player_points = me.points