【发布时间】:2016-03-13 17:10:13
【问题描述】:
我正在尝试构建消息传递系统,我想从表中选择不同的值并按日期排序并返回已读和未读状态。我的表结构为 id, from_user_id, to_user_id, message, datetime, read 。假设虚拟数据如下:
id | from_user_id | to_user_id | message | datetime | read
1 | 20 | 50 | hi | 2016-3-13 06:05:30 | 1
2 | 20 | 50 | hey | 2016-3-13 06:15:30 | 0
3 | 30 | 50 | hi | 2016-3-14 06:05:30 | 0
现在我想选择不同的from_user_id 并按日期排序,以便我可以在列表顶部显示最近聊天的用户的姓名,如果有@987654324 的任何行,还返回读取状态1 @已经读取状态0,那么我想将read返回为0,这样我就可以区分谁的用户消息有未读消息。
假设from_user_id 在一行中有read 状态为0,那么当返回from_user_id 的不同值时,我想将read 状态返回为0。我该怎么做。我尝试如下,但在我的情况下不起作用。它返回不同的值,但不按日期排序,并且在不返回我期望的情况下读取状态。
select distinct(`from_user_id`),register.name FROM message INNER JOIN register ON register.id = message.from_user_id where message.to_user_id = $user_id GROUP BY message.id ORDER BY MAX(datetime) ASC
【问题讨论】: