PHP聊天系统MySQL数据库按datesent sql排序

时间:2017-02-09 20:12:28

标签: php mysql

我正在使用一个PHP聊天系统。我有一个问题,即获取消息的查询语句是选择它们,将它们发送到的两个用户对它们进行分组,然后输出html。

现在,当用户选择聊天时,它仅从第一个聊天ID的开头输出到最后一个id。

我想通过最新的聊天对其进行排序,因为截至目前,它已经从发送消息的第一个用户发送消息到最后一个用户从上到下。例如,如果“用户1”暂时没有发送消息,则该用户将始终是查询语句输出的第一个用户,即使“用户6”已发送了8个新聊天,“用户6”仍然是列表中可供选择的最后一个,这应该是相反的,最新的聊天组应该出现在顶部。我只是不知道如何使用我的SQL查询。

我当前的查询语句是:

$queryall = "SELECT DISTINCT mfrom FROM chat WHERE mto='user2'";

我知道它的编码错误,我想要的东西,我尝试了很多不同的东西,似乎无法让它做我想要的。我已经通过datesent尝试订购并将它们分组,但无法获得任何工作。我相信DISTINCT不允许我根据我不熟悉的语法来做这件事。

mysql database row

User2 chat view

1 个答案:

答案 0 :(得分:2)

您只需要一个简单的ORDER BY

$queryall = "SELECT DISTINCT mfrom FROM chat WHERE mto='user2' ORDER BY datesent DESC";

这会按datesent(降序)顺序按列DESC对您的结果进行排序(在日期/日期时间列上使用时,最新到最旧)。

如果您的用户有多条消息,您可能希望使用GROUP BY代替DISTINCT

$queryall = "SELECT mfrom FROM chat WHERE mto='user2' GROUP BY mfrom ORDER BY MAX(datesent) DESC";