php - 如何对行进行排序,然后对它们进行分组,然后对组进行排序

标签 php mysql sql

我正在尝试为私有(private)消息创建一个用户收件箱,其中显示两个人之间的一条最新消息,并按最新顺序对所有对话进行排序。它的表现应该就像 Facebook 消息收件箱一样,您可以在其中单击最新消息的预览来查看完整的对话,并且对话也按最新消息排序。这是我到目前为止的声明,但它没有显示任何内容,我不知道如何解决它。有人有什么建议吗?

$sqlInbox = "
    SELECT sender, receiver, message, parent, rView
    FROM (SELECT sender, receiver, message, parent, rView
        FROM messages 
        WHERE receiver='$log_username' OR sender='$log_username'
        ORDER BY timestamp DESC)
    GROUP BY parent
    ORDER BY timestamp DESC";

父列代表完整的对话,因此两个设置的人之间的任何消息,无论谁发送或接收,都将在表中具有相同的父 ID。提前致谢。

最佳答案

我注意到的一件事是您需要按您选择的所有列进行分组。

SELECT sender, receiver, message, parent, rView
FROM (SELECT sender, receiver, message, parent, rView
    FROM messages 
    WHERE receiver='$log_username' OR sender='$log_username'
    ORDER BY timestamp DESC)
GROUP BY sender, receiver, message, parent, rView
ORDER BY timestamp DESC

关于php - 如何对行进行排序,然后对它们进行分组,然后对组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19580831/

相关文章:

mysql - 如何将变量和数组的值从 Controller 发送到模型

mysql - MariaDB 事件流动态列?

sql - SQL查询未返回正确的日期范围

sql - 使用 CASE 语句的多个条件

command-line - 使用 xdebug 和 netbeans 调试 php-cli 脚本?

php - MVC 和动态标题

mysql - 数据库进程什么时候会被杀死?

php - 如何防止 PHP 中的 SQL 注入(inject)?

php - 只是 html/js 还是与服务器端代码混合?

php - 用户测试中多个客户端的 Symfony 4.4 弃用警告已弃用,仍存在于文档中