Php 将具有相同值的记录分组

Php 将具有相同值的记录分组,php,mysql,Php,Mysql,我正在尝试创建一个基于对话的消息传递系统 我希望对所有具有相同对话id的邮件进行分组,以便在显示当前对话列表时,您只能看到每个对话中的最新邮件 我可以在mysql查询中对值进行分组,还是必须在php中进行分组?您可以在mysql查询中对值进行分组,如下所示: select * from table where conversation_id = id_here 这将获得所有conversation\u id设置为id\u的记录,然后您可以使用php处理该数组/组。这是数据库中父子关系的基本示例

我正在尝试创建一个基于对话的消息传递系统

我希望对所有具有相同对话id的邮件进行分组,以便在显示当前对话列表时,您只能看到每个对话中的最新邮件


我可以在mysql查询中对值进行分组,还是必须在php中进行分组?

您可以在mysql查询中对值进行分组,如下所示:

select * from table where conversation_id = id_here

这将获得所有
conversation\u id
设置为
id\u的记录,然后您可以使用php处理该数组/组。

这是数据库中父子关系的基本示例。 每条消息都有唯一的id,IY也应该引用conva id的父密钥

select m.convos_id, m.message_content from messages m  
          where m.id in 
          (select MAX(m1.id) from messages m1 GROUP BY m1.convos_id)

然后,您可以获得给定车队id的最新消息。

谢谢您的帮助,这就是我的结束语

select m.convos_id, m.message_content from messages m  
          where m.id in 
          (select MAX(m1.id) from messages m1 GROUP BY m1.convos_id)
SELECT messages.*, messages_conversations.subject
FROM messages, messages_conversations
WHERE messages.to_user_id = '".$userid."'
AND messages_conversations.id = messages.conversation_id
GROUP BY messages.conversation_id

你好Sarfraz,谢谢,但我需要检索所有具有不同id的对话,因此无法指定确切的idid@Ben:那么我想你可能需要使用sql的GROUP BY关键字。谢谢,是的,我现在有了这个。选择消息。*,messages_conversations.subject FROM messages,messages_conversations WHERE messages.to_user_id=“$userid.”按messages.conversation_idI分组有一个名为messages_conversations的表,该表包含字段id、subject和一个名为messages的表,该表具有id、convers_id(id FROM messages_conversal)、FROM_user_id、to_user_id、message_内容、发送日期、,消息_read确切地说,您已经正确地完成了数据库设计。我当时无法理解你的问题。只需根据消息表上给定id的timsestamp或id字段(以防其自动递增)从消息表中选择id即可。从消息m、消息_-conva c中选择*,其中c.id=m.conva_id和m.conva_id=parameter[0]按时间戳desc limit 1排序。