鉴于以下AR查询将邮件检索为会话(按发件人ID分组),如何首先显示最近的邮件?此查询显示已发送的第一条消息,但不显示最新消息。
User.find(1).messages.select("DISTINCT ON (messages.sender_id(created_at)) * ")
.where("messages.sender_id = (?)",friend.id)
.group("messages.sender_id, messages.updated_at, messages.id, messages.user_id, messages.sent, messages.read")
我在这里添加订单子句的位置和方式有点遗失。
答案 0 :(得分:0)
ORDER BY
和DISTINCT
无法协同工作。
正确的方法是改为group by
和order by
。
最大的问题是SELECT *
无法与GROUP BY
一起使用,因此您必须放弃以下其中一项:
GROUP BY
DISTINCT
ORDER BY
一个选项是您可以更改SELECT *
以手动列出所有列,而不希望分组的列可以放在min()
之类的聚合中(这是我在SQL中执行的操作)查询。
我不使用ORM,但希望这会让你知道如何做esp。因为你已经非常接近SQL了。