繁体   English   中英

创建消息对话列表

[英]Create messages conversation list

好的,我试图在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将结果过滤到一个数组中,但我对此完全不满意。 有任何想法吗?

您可以通过按时间排序然后限制为1来使用SQL来完成此操作

就像是

Select ....
ORDER BY Time DESC
LIMIT 1

你可以做这样的事情

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在这里看到它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM