有些查询有bug

时间:2016-12-14 21:21:30

标签: mysql sql

我在php-sql中构建了一个迷你游戏,我的得分也很高

高分应该是按分数排序,然后是用户完成测试的时间。

当用户完成测试并提交他的分数和时间时 - 我运行此查询,然后找到

的速率
    SELECT `rate`
    FROM quiz_1_highscore
    WHERE CASE `score` <= ?
        WHEN true THEN 
            CASE `timer` >= ?
                WHEN true THEN true
                WHEN false THEN
                    CASE `score` != ?
                        WHEN true THEN true
                    END
            END
    END
    ORDER BY `score` DESC, `timer` ASC
    LIMIT 1

在第一个和第三个参数中,它是得分,第二个是时间(秒)

我有那些记录 -

    rate    score   time
    25      10      65
    26      10      74
    27      10      74
    28      10      78

我记录了10分和70秒 - 所以我应该被评为26分 但查询返回27 - 为什么?

我没有LIMIT检查它的命令 - 27 26 28 ...

我该如何解决?

1 个答案:

答案 0 :(得分:2)

试试这个:

我认为您想根据rateLIMIT 1

订购
SELECT `rate`
    FROM quiz_1_highscore
    WHERE CASE `score` <= ?
        WHEN true THEN 
            CASE `timer` >= ?
                WHEN true THEN true
                WHEN false THEN
                    CASE `score` != ?
                        WHEN true THEN true
                    END
            END
    END
    ORDER BY `rate`,`score` DESC, `timer` ASC
    LIMIT 1