将 MySQL 查询结果分组在一起时出错


Error grouping MySQL query results together

我有这个消息表,允许用户互相发送消息。 sender_id是发送邮件的人员的 ID。 receiver_id是接收邮件的人员的 ID。 message_idsender_idreceiver_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

请问,我该怎么做?

查询:选择 * 来自消息,其中 ID 在 (选择最大(id) 发件人 其中 ID 在(从消息

分组message_id中选择 ID) 按 message_id 分组) 按 ID ASC 排序

下表用于查询:

ID sender_id receiver_id message_id消息时间1 2 7 9 hi 2015-01-03 15:48:042 7 2 9 你好 2015-01-03 14:50:533 4 2 6 好 2015-01-03 14:50:534 2 4 6 bad 2015-01-03 14:51:10