Php 创建消息会话列表
好的,我正在尝试用PHP构建一个会话列表,其中包含用户拥有的所有消息。 我的数据库设置为有4个字段,一个发送者ID、一个接收者ID、一个时间戳和消息。我的查询返回接收方ID等于当前用户ID的每个结果。我只想选择每个发送方ID的第一个匹配项。即:Php 创建消息会话列表,php,mysql,list,messages,Php,Mysql,List,Messages,好的,我正在尝试用PHP构建一个会话列表,其中包含用户拥有的所有消息。 我的数据库设置为有4个字段,一个发送者ID、一个接收者ID、一个时间戳和消息。我的查询返回接收方ID等于当前用户ID的每个结果。我只想选择每个发送方ID的第一个匹配项。即: ================================================== | Sender ID | Receiver ID | Time | Message | =========================
==================================================
| 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 |
==================================================
==================================================
|发送方ID |接收方ID |时间|消息|
==================================================
|2 | 1 | 1373914164 | test |您可以使用SQL按时间排序,然后限制为1
差不多
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
但是,如果接收者恰好(我认为这是不可能的)在同一时间接收消息,这可能会导致奇怪的结果
你可以在这里看到它,它不返回我想要的结果,只返回最新的一行。我需要在整个表中第一次出现每个发件人ID。啊,我误解了这个问题,以为我们是在按用户查询。在这种情况下,Java Devil的答案应该适用于您,在您的小提琴中,查询工作得非常完美,但出于某种原因,在我的localhost服务器上,它只返回每一行。。我准确地实现了查询,并将字段名替换为与表中的字段名相对应的字段名。