我正在使用一个PHP聊天系统。我有一个问题,即获取消息的查询语句是选择它们,将它们发送到的两个用户对它们进行分组,然后输出html。
现在,当用户选择聊天时,它仅从第一个聊天ID的开头输出到最后一个id。
我想通过最新的聊天对其进行排序,因为截至目前,它已经从发送消息的第一个用户发送消息到最后一个用户从上到下。例如,如果“用户1”暂时没有发送消息,则该用户将始终是查询语句输出的第一个用户,即使“用户6”已发送了8个新聊天,“用户6”仍然是列表中可供选择的最后一个,这应该是相反的,最新的聊天组应该出现在顶部。我只是不知道如何使用我的SQL查询。
我当前的查询语句是:
$queryall = "SELECT DISTINCT mfrom FROM chat WHERE mto='user2'";
我知道它的编码错误,我想要的东西,我尝试了很多不同的东西,似乎无法让它做我想要的。我已经通过datesent尝试订购并将它们分组,但无法获得任何工作。我相信DISTINCT不允许我根据我不熟悉的语法来做这件事。
答案 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";