创建消息对话列表

时间:2013-07-15 19:21:01

标签: php mysql list messages

好的,我正在尝试用PHP构建一个用户拥有的所有消息的对话列表。 我的数据库设置有4个字段,发件人ID,接收者ID,时间戳和消息。我的查询返回接收者ID等于当前用户ID的每个结果。我只想选择每个发件人ID的第一次出现。即:

==================================================
| Sender ID | Receiver ID |    Time    | Message |
==================================================
|     2     |      1      | 1373914164 |   test  | <--- this one
|     2     |      1      | 1373914155 | ..test  |
|     1     |      1      | 1373914134 |...test  | <--- this one
|     2     |      1      | 1373914111 |   test. |
|     1     |      1      | 1373914108 |   test..|
|     3     |      1      | 1373914102 |   test  | <--- this one
|     3     |      1      | 1373914101 |   test  |
==================================================

我的想法是使用PHP过滤数组中的结果,但我只是在脑中放屁。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以通过按时间排序然后限制为1

来使用SQL

这样的东西
Select ....
ORDER BY Time DESC
LIMIT 1

答案 1 :(得分:0)

你可以做这样的事情

SELECT *     -- Or what ever Columns
FROM aTab    -- Your table name
WHERE time IN (
   SELECT MAX(time) 
   FROM aTab
   WHERE R_id = 1 -- would help create better consistency
   GROUP BY S_ID)
AND R_id = 1

然而,如果接收者碰巧(我不太可能认为)在同一时间收到消息,这可能会导致奇怪的结果

您可以使用此SQLFiddle

在此处查看