在排序之前尝试在 MariaDB 中对 table 进行分组

Trying to group a table in MariaDB before sorting it

我正在尝试对 table 进行分组,然后按如下方式排序:

SELECT *
FROM (
 SELECT meditators.token, meditators.id, meditators.udid, meditations.id AS meditations_id, meditations.datetime FROM meditations, meditators
 WHERE meditations.meditator=meditators.id
 ORDER BY meditations.id DESC
 ) AS sub
GROUP BY sub.udid

然而结果 returns 是列表的第一个元素而不是最后一个元素,因为他的排序暗示了这一点。 反向执行:

SELECT meditators.token, meditators.id, meditators.udid, meditations.datetime, meditations.id AS meditations_id FROM meditations, meditators
 WHERE meditations.meditator=meditators.id
 ORDER BY meditations.id DESC

正确地 returns 有序列表。

事实上已经在执行:

SELECT *
FROM (
 SELECT meditators.token, meditators.id, meditators.udid, meditations.id AS meditations_id, meditations.datetime FROM meditations, meditators
 WHERE meditations.meditator=meditators.id
 ORDER BY meditations.id ASC
 ) AS sub

returns 无序列表。这似乎不是对有序列表进行分组的正确方法,正确的方法是什么?

事实上,我在以下位置找到了 post: https://mariadb.com/kb/en/mariadb/why-is-order-by-in-a-from-subquery-ignored/ 不过,这似乎完全排除了我的技术,但没有指定替代技术。

我发现解决方案是设置:

 set @@optimizer_switch='derived_merge=OFF';

在执行查询之前。但这似乎是一个解决方案,是否有更好的解决方案来满足我的需求?