首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP聊天系统MySQL数据库Order by Chat sql

PHP聊天系统MySQL数据库Order by Chat sql
EN

Stack Overflow用户
提问于 2017-02-10 04:12:28
回答 1查看 548关注 0票数 2

我有一个php聊天系统,我正在工作。我有一个问题,抓取消息的查询语句选择它们,根据发送和接收消息的两个用户对它们进行分组,然后输出html。

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

我想按最新的聊天记录排序,因为到目前为止,它是从第一个发送消息的用户到最后一个发送消息的用户从上到下排序的。例如,如果“用户1”有一段时间没有发送消息,那么该用户将始终是查询语句输出的第一个用户,即使“用户6”发送了8个新的聊天记录,“用户6”仍然是列表中的最后一个可供选择的聊天组,这应该是相反的,最新的聊天组应该出现在顶部。我只是不知道如何使用我的SQL查询做到这一点。

我当前的查询语句是:

代码语言:javascript
复制
$queryall = "SELECT DISTINCT mfrom FROM chat WHERE mto='user2'";

我知道我想要的代码是错误的,我尝试了很多不同的东西,似乎不能让它做我想要的事情。我尝试过按日期排序和对它们进行分组,但都不能正常工作。我相信DISTINCT不允许我基于我不熟悉的语法来做这件事。

mysql database row

User2 chat view

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-10 05:01:50

您只需要一个简单的ORDER BY

代码语言:javascript
复制
$queryall = "SELECT DISTINCT mfrom FROM chat WHERE mto='user2' ORDER BY datesent DESC";

这将按日期(降序)的列datesent对结果集进行排序(当在DESC /datetime列上使用时,从最新到最旧)。

当您的用户有多条消息时,您可能希望使用GROUP BY而不是DISTINCT

代码语言:javascript
复制
$queryall = "SELECT mfrom FROM chat WHERE mto='user2' GROUP BY mfrom ORDER BY MAX(datesent) DESC";
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42145987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档