我有这个消息表,允许用户相互发送消息。 sender_id
是发送邮件的人的ID。 receiver_id
是收到邮件的人的ID。 message_id
将sender_id
和receiver_id
加在一起。这是下面的示例。
id sender_id receiver_id message_id message time
1 2 7 9 hi -
2 7 2 9 hello
3 4 2 6 good
4 2 4 6 bad
现在,我正尝试使用message_id将消息组合在一起。
注意:$_SESSION['id'] is '2'
$query = "SELECT * FROM message WHERE sender_id = :id OR receiver_id = :id GROUP BY message_id HAVING COUNT(*) >=1 ORDER BY time DESC";
foreach ($db->query($query, array('id' => $_SESSION['id'])) AS $output)
{
$message = $output['message'];
}
显示的内容是:
hi
good
但我希望查询显示最新消息,而不是第一条消息,即
hello
bad
请问,我该怎么做?
答案 0 :(得分:0)
查询: SELECT * FROM message其中id IN(SELECT max(id)FROM message其中id IN(消息组中的SELECT id by message_id)group by message_id)ORDER BY id ASC
以下是用于查询的表:
id sender_id receiver_id message_id message time 1 2 7 9 hi 2015-01-03 15:48:04 2 7 2 9 hello 2015-01-03 14:50:53 3 4 2 6 good 2015-01-03 14:50:53 4 2 4 6 bad 2015-01-03 14:51:10