2012-04-01 79 views
3

为什么只有其中一个查询有效?MYSQL为什么ORDER BY DESC失败,但ORDER BY ASC的工作?

作品:

SELECT * 
FROM `global_rank` 
WHERE rank_type = 2 
    AND rank < 1531.26367188 
    AND id <> 103 
ORDER BY rank ASC 

失败(即返回0行):

SELECT * 
FROM `global_rank` 
WHERE rank_type = 2 
    AND rank < 1531.26367188 
    AND id <> 103 
ORDER BY rank DESC 
+0

你确定它在同一张桌子上,数据相同吗?否则,它*必须*工作。 – wallyk 2012-04-01 03:22:58

+0

是的,我在phymyadmin运行这个和由于某种原因第二个不返回 – user257543 2012-04-01 03:37:49

+0

rank_type和等级被索引,我相信它与mysql索引不支持反向排序有关吗? – user257543 2012-04-01 04:30:59

回答

4

没有问题,您的SQL查询他们是完美无瑕的。

请检查您验证查询结果的方式。我知道有时我们忽略了结果(常见的人为错误)。

1

经过几个小时的思考,我几乎可以肯定它必须是一个损坏的索引问题。删除rank上的索引并重新添加它以查看行为是否改变。