尝试添加除法运算符时嵌套的MySQL语法错误

时间:2014-02-27 20:07:56

标签: mysql

我有一个看起来像这样执行并完美运行的查询:

UPDATE users
SET player_skill = (
(
        SELECT
            sum(avg_score)
        FROM
            skill
        WHERE
            username = "JohnDoe"
        AND game = "Bingo"
    ) - 
    (
        SELECT
            sum(avg_score)
        FROM
            events
        WHERE
            game = "Bingo"
    ) 

) WHERE username = "JohnDoe"

我想添加这样的除法运算符:

UPDATE users
SET player_skill = (
    (
        (
            SELECT
                sum(avg_score)
            FROM
                skill
            WHERE
                username = "JohnDoe"
            AND game = "Bingo"
        ) - (
            SELECT
                sum(avg_score)
            FROM
                events
            WHERE
                game = "Bingo"
        )
    ) / SELECT
        COUNT(*)
    FROM
        skill
    WHERE
        username = "JohnDoe"
    AND game = "Bingo"
)
WHERE
    username = "JohnDoe"

它向我吐出错误代码

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COUNT(*)
FROM
    skill
WHERE
    username = "JohnDoe"
AND game = "Bingo" )
) W' at line 21

我已经尝试了一段时间,但似乎无法弄清楚为什么它不会让它运行。我对此有类似的疑问似乎很好,但我不能让这个问题起作用。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

试试这个

  UPDATE users
  SET player_skill = (
                     SELECT (sum(s.avg_score) - sum(e.avg_score))/COUNT(e.*)
                     FROM skill s 
                     INNER JOIN events e on s.game = e.game
                     WHERE e.username = "JohnDoe"
                     AND  e.username = "Bingo"
                     )

当您尝试此查询时,您将收到此错误:

  

[Err] 1064 - 您的SQL语法没有错误。你不需要查看与你的MySQL服务器版本相对应的手册,以获得正确的语法,不要使用任何附近的东西。