简单的mysql查询以特定顺序显示结果

时间:2012-06-10 00:17:47

标签: mysql sql database

我创建了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

1 个答案:

答案 0 :(得分: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