[英]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.