【发布时间】:2016-07-26 16:58:21
【问题描述】:
我有一个 SQL 表,其中包含所有用户和组的对话。我可以轻松地从中检索群组对话,但不知道如何从中检索每个用户的最后一条消息。
列说明:
• message_id:不言自明
• group_id:由于对话还包含群组消息,因此我将使用 group_id 过滤这些消息,而不是为其创建新的消息表。
• 用户:发送者/接收者(通过定义最后一列“isReceived”的值,它可以是发送者或接收者)。
• 消息:不言自明
• 创作:不言自明
• isSeen:如果消息已被用户(接收者)看到。
• isError:如果发送消息时出错。
• isReceived:检查消息是否由默认用户接收或发送。
现在我真正想要的是检索所有对话的最后一条消息,无论它是发送还是接收。例如,“Sondre”(另一个用户)给我发了一条消息“你好”,现在我给他发了一条回复/消息“你好”,当我从消息表中检索数据时,我希望显示我的回复而不是他的回复。我还上传了当前数据的照片和使用我想要的查询的数据:
消息表数据:
我想要使用查询的数据:
【问题讨论】:
-
没有图片,谢谢。相反,请考虑遵循这个简单的两步操作过程: 1. 如果您还没有这样做,请提供适当的 CREATE 和 INSERT 语句(和/或 sqlfiddle),以便我们可以更轻松地复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。
-
对不起,如果我忘记提及这是一个问题,我希望你们帮助我找到一种方法来从消息表中检索每个用户的最后一条消息。我使用了 SELECT 和 GROUP BY 语句,但它对我没有帮助,结果也不是我所期望的。
-
@Strawberry:我使用了“SELECT * FROM messages GROUP BY user”,但它对我不起作用。我想要“消息”表中每个用户的最后一条消息。
标签: mysql sql greatest-n-per-group