我来自MySQL背景,在那里,GROUP BY与Postgres有很大不同。在Postgres - 以及任何基于标准的SQL数据库中 - 您必须按所有选定的列进行分组,而在MySQL中,您可以挑选要分组的列。
我读到,您可以通过DISTINCT ON
获得等效的效果,并且在大多数情况下确实如此。问题在于,您必须按所有不同的列进行ORDER BY
,而此排序必须是最左边的排序。当我想首先按另一列排序时,这就成为了一个问题。
现在我的查询看起来像这样:
SELECT
DISTINCT ON (eventable_id, eventable_type)
events.eventable_id, events.eventable_type, events.*
FROM events
WHERE <query>
ORDER BY eventable_id, eventable_type, events.created_at DESC
我希望将排序方式更改为以下方式:
ORDER BY events.created_at, eventable_id, eventable_type DESC
有什么建议可以让这个工作起来吗?