SQL查询中的语法错误

时间:2015-01-11 16:39:30

标签: mysql sql triggers

我正在尝试编写一个获取点的查询,给予匹配事件中的玩家,将其乘以另一列然后再乘以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;

任何帮助将不胜感激。

谢谢。

1 个答案:

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