这里我正在扩展我的上一个问题。私人聊天系统MYSQL查询显示发件人/收件人的最后一条消息
Private chat system MYSQL query ORDERBY and GROUPBY
另外,我创建了一个多个表称为从那里我会得到用户信息的用户。
信息表
message_id|sender_id||receiver_id|message_text| created_time
1 101 102 Message A 2012-06-07 08:07:18
2 101 102 Message B 2012-06-07 08:10:20
3 103 102 Message C 2012-06-07 08:12:43
用户表:
id | name
101 bob
102 jack
103 mark
现在终于我能得到以下结果:
name|message_text | created_time
mark message C 2012-06-07 08:12:43
bob message B 2012-06-07 08:10:20
通过使用此查询:
SELECT * FROM messages,users
WHERE messages.receiver_id = 102
AND messages.sender_id=users.id
AND messages.created_time IN
(SELECT MAX(created_time)
FROM messages
GROUP BY sender_id)
ORDER BY messages.created_time DESC
现在我想在我的结果是
如果插孔(ID:102)回复标记(ID:103),那么我怎么能得到这个输出:
name|message_text | created_time
mark message D 2012-06-07 08:12:48
bob message B 2012-06-07 08:10:20
注:此处“消息D“并且时间戳是他为了标记而返回的。
其中MESSAGE_TEXT字段将显示标志和插孔 CREATED_TIME场之间的最后的消息会显示消息创建时间和 名称字段将显示的人的名字向谁插孔发送或接收消息。
我想我们需要修改/拆分表,但不知道如何以及什么查询将执行此任务。
我在您的表格中看不到'message D' –
@Jadzia这是一个群组消息系统吗? – Darshana
如果'jack'回复'mark'发信人的'message D'应该是'jack'我猜? – Darshana