Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 创建消息会话列表_Php_Mysql_List_Messages - Fatal编程技术网

Php 创建消息会话列表

Php 创建消息会话列表,php,mysql,list,messages,Php,Mysql,List,Messages,好的,我正在尝试用PHP构建一个会话列表,其中包含用户拥有的所有消息。 我的数据库设置为有4个字段,一个发送者ID、一个接收者ID、一个时间戳和消息。我的查询返回接收方ID等于当前用户ID的每个结果。我只想选择每个发送方ID的第一个匹配项。即: ================================================== | Sender ID | Receiver ID | Time | Message | =========================

好的,我正在尝试用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  |
==================================================
==================================================
|发送方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服务器上,它只返回每一行。。我准确地实现了查询,并将字段名替换为与表中的字段名相对应的字段名。