Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按时间戳对组内的行进行排序_Php_Mysql_Sql - Fatal编程技术网

Php 按时间戳对组内的行进行排序

Php 按时间戳对组内的行进行排序,php,mysql,sql,Php,Mysql,Sql,我正试图建立和收件箱的私人邮件 $sqlInbox = " SELECT sender, receiver, message, parent, rView FROM messages WHERE receiver='$log_username' OR sender='$log_username' GROUP BY parent ORDER BY timestamp DESC"; 这段代码根据时间戳对每个组进行排序,因此如果user1在user2之后

我正试图建立和收件箱的私人邮件

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

这段代码根据时间戳对每个组进行排序,因此如果user1在user2之后向我发送消息,user1将是列表中的第一个。然而,我遇到的问题是,每个组中的消息没有按时间戳排序,因此组的输出总是用户发送的第一条消息,而我需要它是用户发送的最新消息。因此,我需要按时间戳对组内的行进行排序,以及按时间戳对整个组进行排序。我一辈子都不知道该怎么做。有人能帮忙吗?(parent是共享两个公共用户的所有消息的公共ID,而不考虑发送方/接收方,即任意两个用户之间所有消息的集合)。提前谢谢

我需要咖啡,所以我希望我正确地阅读了你的问题,但这不只是在order by语句中添加
parent

$sqlInbox = "
    SELECT sender, receiver, message, parent, rView
    FROM messages 
    WHERE receiver='$log_username' OR sender='$log_username' 
    GROUP BY parent 
    ORDER BY parent, timestamp DESC";
请注意,您没有使用任何聚合函数,因此您甚至可能不需要group by(除非您正在做一些您发布的代码中没有的其他事情:

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

最后,如果是我自己的代码,我会考虑添加一个读/未读的标志到消息中,并使用Orthby by子句:< /P>

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

这会将整个内容分为两个部分-顶部为未读邮件,底部为已读邮件-其他顺序与以前相同。

为什么需要使用“分组依据”?我尝试了此方法。我只想为每个父组(每个对话)显示一条邮件(最近的一条)。因此,我需要显示单个最新消息的组,然后是父级具有最新消息的组。