【发布时间】:2020-02-24 09:04:17
【问题描述】:
我有一个包含字段 channel_number、body、created_at、recipint_id 和 sender_id 的消息表我希望在 channel_number 上有不同的消息并按 messages.created_at 排序
基本上我想在分页中显示所有频道,最新消息的频道将在顶部。这是我尝试过的:
SELECT *
FROM messages
where id IN ( (SELECT channel_number, MIN(id) AS messages_id
FROM messages
GROUP BY channel_number
) as a
) a.messages_id
ORDER BY a.messages_id DESC;
我已经为此工作了几个小时并进行了许多查询,但没有成功,因为在结果中我需要消息的所有字段而不是选定的频道和 ID。
编辑 - 我正在使用 postgres,消息表中的 channle_number 没有 uniq 约束
【问题讨论】:
-
请提供一些示例数据。
-
您运行的是 MySQL 还是 Postgres?请仅标记相关数据库。
-
它的 postgres...
-
在决定为每个 channel_number 保留哪一行时,您希望它按 created_at 排序,还是您以其他方式选择哪些不同的行,然后按 channel_number 对最终结果排序?
-
我已经回答了我是怎么做的,我想你会明白的
标签: sql postgresql