【发布时间】:2014-05-06 03:15:16
【问题描述】:
我有一个像下面这样的消息表,如何获取特定用户的消息,即获取一个用户最近的一条消息。例如 user1 有带有 的消息user2 和 user3,如何获取 user1 和 user2 之间的最新消息,user1 之间的最新消息 和 user3?
class Message(Base):
__tablename__ = 'messages'
id = Column(Integer(), primary_key=True)
sender_id = Column(Integer(), ForeignKey('users.id'))
body = Column(Text())
recipient_id = Column(Integer())
created_at = Column(DateTime())
updated_at = Column(DateTime())
我能找出的 SQL 如下,但这还不够。你能帮帮我吗?非常感谢,:)。
session.query(Message).\
filter(or_(Message.user_id==user.id, Message.recipient_id==user.id))
【问题讨论】:
-
这个问题很难阅读或理解。本质上,您希望 max(id) 按 sender_id 或 recipient_id 分组。 Ir,如果您不能相信 id 会随着“created at”而严格增加,那么您可以进行涉及 select max(id) 的连接,按收件人分组并从您的数据表中发送并与 max(created_at) 连接再次按数据表中的 sender_id 和 recipient_id 分组(显然加入收件人和发件人 ID 以及日期)。但是根据你在这里的情况,很难提供实际的代码。问题不清楚。首先,这不是 SQL....
-
@evanv,谢谢,我认为使用 sql group 是正确的,但我想不通,我已经更新了我的问题。
-
@evanv,对不起,stackoverflow 今天阻止我编辑问题
标签: sql sqlalchemy fetch