关于MySQL TopN不能正常排序的一些测试
背景:这是在工作中遇到的问题,应该跟mysql版本有关
比如我要获取每门学科的排名
如图所示,我直接查询chengji 表,对每门学科进行排序,正常
如图所示,我加了一张表进行,这个时候就不能先 order by了,而是先查询,再order by ,可以看到输出的排名跟想要的差的很多
我们试试让这两个关联表先排序
这两个都是没有问题的,解决的关键是需要让关联的表正常排序,如果不能先排序使用标记就不能得到想要的结果了
但是有些复杂场景(也可能是优化器版本问题)不管怎么样他都会帮你把order by 放到外面来,也就是后执行 order by ,这个时候就需要强制要求优化器限制性里边的排序在多表关联中使用 limit 100000,这样优化器就是优先执行里边了