有没有办法在没有子选择的情况下进行以下查询?
SELECT * FROM
(
SELECT * FROM messaging_message WHERE recipient_id=4 ORDER BY timestamp DESC
) combined
GROUP BY thread_id HAVING status='unread'
桌子:
`messaging_message`
- id
- thread_id
- content
- sender_id
- recipient_id
- timestamp
- status
线程 ID 是消息的父线程。
更新:到目前为止,在测试这两个答案时,两个查询都没有生成我需要的结果。
查询应仅返回消息线程中最新消息 = '未读' 的结果。以下两个查询都返回具有状态 = '未读' 的消息的任何线程的最顶层结果。
我正在尝试做的是类似于任何电子邮件收件箱的东西,例如 Gmail。假设收件箱在第一页显示 25 个线程。我只想突出显示状态为“未读”的最新消息的线程(忽略比最新消息更早的任何消息的状态)。
这也是我GROUP BY
在排序结果上使用的原因,这样我只得到最新的结果,在这些结果中,看看哪个有 status='unread'
(请注意,我还将上述查询中的状态从“已删除”更改为“未读”,以便解释更清楚。)