【发布时间】:2012-12-10 05:26:23
【问题描述】:
基本上我有一个表messages,其中user_id 字段标识创建消息的用户。
当我显示两个用户之间的对话(一组消息)时,我希望能够按user_id 对消息进行分组,但采用一种棘手的方式:
假设有一些消息(按created_at desc排序):
id: 1, user_id: 1
id: 2, user_id: 1
id: 3, user_id: 2
id: 4, user_id: 2
id: 5, user_id: 1
我想按以下顺序获取 3 个消息组:
[1,2], [3,4], [5]
它应该按 *user_id* 分组,直到它看到另一个,然后按那个分组。
我正在使用 PostgreSQL,并且很乐意使用特定于它的东西,只要能提供最佳性能。
【问题讨论】:
-
我认为您不需要
GROUP BY。它应该是更多的应用功能。
标签: sql ruby-on-rails postgresql plpgsql window-functions