我有一个php聊天系统,我正在工作。我有一个问题,抓取消息的查询语句选择它们,根据发送和接收消息的两个用户对它们进行分组,然后输出html。
现在,它只在用户选择聊天时从第一个聊天id的开头输出到最后一个id。
我想按最新的聊天记录排序,因为到目前为止,它是从第一个发送消息的用户到最后一个发送消息的用户从上到下排序的。例如,如果“用户1”有一段时间没有发送消息,那么该用户将始终是查询语句输出的第一个用户,即使“用户6”发送了8个新的聊天记录,“用户6”仍然是列表中的最后一个可供选择的聊天组,这应该是相反的,最新的聊天组应该出现在顶部。我只是不知道如何使用我的SQL查询做到这一点。
我当前的查询语句是:
$queryall = "SELECT DISTINCT mfrom FROM chat WHERE mto='user2'";我知道我想要的代码是错误的,我尝试了很多不同的东西,似乎不能让它做我想要的事情。我尝试过按日期排序和对它们进行分组,但都不能正常工作。我相信DISTINCT不允许我基于我不熟悉的语法来做这件事。
发布于 2017-02-10 05:01:50
您只需要一个简单的ORDER BY
$queryall = "SELECT DISTINCT mfrom FROM chat WHERE mto='user2' ORDER BY datesent DESC";这将按日期(降序)的列datesent对结果集进行排序(当在DESC /datetime列上使用时,从最新到最旧)。
当您的用户有多条消息时,您可能希望使用GROUP BY而不是DISTINCT
$queryall = "SELECT mfrom FROM chat WHERE mto='user2' GROUP BY mfrom ORDER BY MAX(datesent) DESC";https://stackoverflow.com/questions/42145987
复制相似问题