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

时间:2015-01-03 09:07:34

标签: php mysql pdo

我有这个消息表,允许用户相互发送消息。 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

请问,我该怎么做?

1 个答案:

答案 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