Android列表式短信mysql查询

Android列表式短信mysql查询,android,mysql,Android,Mysql,我无法解析mysql查询以使用户处于首位。尝试以不同的方式分配查询会失败。问题是,我们不知道发送方是否发送了最新消息或接收方。我们有一个包含发送方和接收方ID的转换表。现在,我们必须显示那些在上面的人,他们自己发送了最新消息,或者我们的发件人xyz发送了最新消息。我们不能按发送者或接收者分组,因为如果这样做,我们可能会丢失发送者向其发送消息的记录的分配。如果你能帮我解决这个问题,请显示最上面那些自己发送了最新消息的人或我们的发件人xyz发送了最新消息的人的列表,就像我们在Android短信应用程

我无法解析mysql查询以使用户处于首位。尝试以不同的方式分配查询会失败。问题是,我们不知道发送方是否发送了最新消息或接收方。我们有一个包含发送方和接收方ID的转换表。现在,我们必须显示那些在上面的人,他们自己发送了最新消息,或者我们的发件人xyz发送了最新消息。我们不能按发送者或接收者分组,因为如果这样做,我们可能会丢失发送者向其发送消息的记录的分配。如果你能帮我解决这个问题,请显示最上面那些自己发送了最新消息的人或我们的发件人xyz发送了最新消息的人的列表,就像我们在Android短信应用程序列表中看到的一样

SELECT  a.*
FROM    conversation a
        INNER JOIN
        (
            SELECT  senderid, receiverid, MAX(sentDate) maxDate
            FROM    conversation
            GROUP BY senderid, receiverid
        ) b ON  a.senderid = b.senderid AND
                a.receiverid = b.receiverid AND
                a.sentDate  = b.maxDate

请向我们展示该架构的外观。该架构如下所示。表名对话。。列id、senderid、receiverid、message、sentdate您想获得基于sentdate的最新senderid、receiverid吗?还请注意,与智能手机一样,我需要以线程形式显示发件人/收件人列表,并根据sentdate按降序排列。无论发件人是否已向a发送邮件,或a已向B发送邮件,如果A和B中的任何一个发送了最新消息,那么它们的线程将位于顶部。若一条消息被发送到C,其他线程也会如此,反之亦然。感谢您的快速响应。请注意,我需要显示发件人/收件人列表。在智能手机中,您的姓名不会显示在任何位置,但只显示其他人的姓名,当您打开线程时,它会显示您和他之间的所有对话,并且此列表取决于最新发送日期,无论您是向他发送消息还是他向您发送消息。我只需要显示此姓名列表,不是对话,但用户列表应根据发送者或接收者的消息显示发送时间表示最新线程在顶部,然后是下一个,依此类推。我尝试将给定查询修改为:选择一个。*从对话中选择一个内部连接选择如果发送者id=1,接收者id,发送者id,MAXsent_date maxDate会话组中的发送方_id b在a.sender_id=b.sender_id和a.receiver_id=b.receiver_id和a.sent_date=b.maxDate这给了我很好的结果,但这里有一个问题。如果只有a向b发送了消息,或者b向a发送了消息,则此会话不会显示在其中。你能帮我解决一下吗。感谢使用左连接而不是内部连接。这非常有效:从对话a内部连接中选择b.snd,maxDate选择IFsender\u id=1,receiver\u id,sender\u id为snd,receiver\u id,sender\u id,MAXsent\u date maxDate按sender\u id从对话组中选择maxDate,a.sender\u id=b.sender\u id和a.receiver\u id=b.receiver\u id和a.sent\u date=b.maxDate ORDER BY maxDate DESC上的receiver\u id b虽然多次给出了结果,但GROUP BY干扰了记录,所以在得到这些结果后,我通过PHP处理了代码。再次感谢。