MySQL“GROUP BY”忽略记录顺序

时间:2018-05-03 10:29:31

标签: mysql sql-order-by

我们刚刚将数据库从MySQL 5.0服务器迁移到5.5服务器,这样的简单查询似乎不再按预期工作:

    SELECT * FROM (
        SELECT *
        FROM tblTable
        ORDER BY fldField ASC
    ) tmp
    GROUP BY fldField

内部查询仍会返回正确排序的记录集,但group by不再选择该集合的第一条记录。

将订单切换为DESC也没有任何影响,因此可能是group by尚未切换到选择最后一条记录。

据我所知,group by实际上只是根据创建的顺序选择第一条记录,而不是实际记录集的顺序。如果这有意义吗?

我似乎无法找到任何错误报告或更改日志备注,所以希望有人在这里有想法吗?

1 个答案:

答案 0 :(得分:0)

事实证明,CentOS 7发布了MariaDB而不是MySQL,MariaDB忽略了内部查询的ORDER BY子句,让外部查询将内部的结果集作为无序表处理,以获得更好的性能。 / p>

这里有两种选择。之一:

希望这能节省一些时间。