0

我创建了 2 个表格消息和对话。

会话表将为发送和接收消息的两个用户创建一个唯一 ID。

消息表将包含用户消息的所有信息。

对话表

conversation_id | user_id1 | user_id2 |last_message_id
      1              5          1           4
      2              5          2           5

message_id  | conversation_id | sender_id |  message |  created_time
   1           1                   5          MSG A     2012-06-10 00:20:04
   2           1                   5          MSG B     2012-06-10 00:20:21
   3           1                   5          MSG C     2012-06-10 00:21:09
   4           1                   1          MSG D     2012-06-10 00:22:23
   5           2                   5          MSG E     2012-06-10 00:25:16

我想要的输出:

sender_id | message | created_time
   5        MSG E     2012-06-10 00:25:16
   1        MSG D     2012-06-10 00:22:23

我尝试了什么:

SELECT * FROM conversation c, messages m 
WHERE c.user_id1='$userid' OR c.user_id2='$userid'
AND c.last_message_id=m.message_id
ORDER BY created_time DESC

但是这个查询没有显示正确的结果。

我们是否也需要像以下这样的东西来分组?

SELECT * FROM TABLE
WHERE CONDITION
(SELECT MAX(created_time)
FROM TABLE
GROUP BY SOMEFEILD)
order by time desc
4

1 回答 1

0

尝试像这样更改您的查询

SELECT * FROM conversation c, messages m 
WHERE (c.user_id1='$userid' OR c.user_id2='$userid')
AND c.last_message_id=m.message_id
ORDER BY created_time DESC
于 2012-06-10T00:27:56.470 回答