Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 有些查询有bug_Mysql_Sql - Fatal编程技术网

Mysql 有些查询有bug

Mysql 有些查询有bug,mysql,sql,Mysql,Sql,我用PHPSQL做了一个小游戏,我的分数也很高 高分应按分数排序,然后按用户完成测试的时间排序 当用户完成测试并提交他的分数和时间时,我运行这个查询,并由此找到 SELECT `rate` FROM quiz_1_highscore WHERE CASE `score` <= ? WHEN true THEN CASE `timer` >= ? WHEN true THEN true

我用PHPSQL做了一个小游戏,我的分数也很高

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

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

    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
我记录了10分70秒——所以我应该被评为26分
但是查询返回27-为什么

我没有限制地检查了一下,订单是27 26 28


我如何解决这个问题?

试试这个:

我想您应该按照
价格
限额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
SELECT`rate`
来自测验1的高分
在哪种情况下,`score`=?
当为真时,则为真
那么什么时候是错的
案例“分数”!=?
当为真时,则为真
结束
结束
结束
按'rate'、'score'DESC、'timer'ASC'排序
限制1

您正在使用哪些RDBMS?
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