背景:这是在工作中遇到的问题,应该跟mysql版本有关

比如我要获取每门学科的排名
关于MySQL TopN不能正常排序的一些测试
如图所示,我直接查询chengji 表,对每门学科进行排序,正常

关于MySQL TopN不能正常排序的一些测试如图所示,我加了一张表进行,这个时候就不能先 order by了,而是先查询,再order by ,可以看到输出的排名跟想要的差的很多

我们试试让这两个关联表先排序
关于MySQL TopN不能正常排序的一些测试

关于MySQL TopN不能正常排序的一些测试
这两个都是没有问题的,解决的关键是需要让关联的表正常排序,如果不能先排序使用标记就不能得到想要的结果了

但是有些复杂场景(也可能是优化器版本问题)不管怎么样他都会帮你把order by 放到外面来,也就是后执行 order by ,这个时候就需要强制要求优化器限制性里边的排序
关于MySQL TopN不能正常排序的一些测试在多表关联中使用 limit 100000,这样优化器就是优先执行里边了

相关文章:

  • 2021-05-15
  • 2022-01-11
  • 2022-12-23
  • 2021-10-18
  • 2021-08-07
  • 2022-12-23
  • 2022-02-06
  • 2021-11-28
猜你喜欢
  • 2021-08-20
  • 2022-02-07
  • 2022-12-23
  • 2021-12-02
  • 2021-07-10
  • 2021-12-23
  • 2021-04-22
相关资源
相似解决方案