Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.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 MySQL:按ID对分组结果排序_Php_Mysql_Group By_Sql Order By - Fatal编程技术网

Php MySQL:按ID对分组结果排序

Php MySQL:按ID对分组结果排序,php,mysql,group-by,sql-order-by,Php,Mysql,Group By,Sql Order By,我在分组时,按ID对结果进行排序时遇到了一个小问题: $get_seen_messages = mysql_query("SELECT * FROM chat WHERE userto='$login_cookie' AND status='seen'

我在分组时,按ID对结果进行排序时遇到了一个小问题:

$get_seen_messages = mysql_query("SELECT * 
                                  FROM chat 
                                  WHERE userto='$login_cookie' 
                                    AND status='seen' 
                                  GROUP BY userfrom 
                                  ORDER BY id DESC");

请帮助我:D

哪个
id
?决不能将
SELECT*
groupby
一起使用。使用
分组依据
时,所有未聚合的列都应位于
分组依据
中。因此,这是一个格式正确的查询

SELECT userfrom, MAX(id) as id
FROM chat
WHERE userto = '$login_cookie' AND status = 'seen'
GROUP BY userfrom
ORDER BY MAX(id) DESC;
不过,我怀疑您希望为每个
用户从
获取聊天记录中的最近一行。在这种情况下,格式正确的查询如下所示:

select c.*
from chat c
where userto = '$login_cookie' and status = 'seen' and
      id = (select max(c2.id)
            from chat c2
            where c2.userto = c.userto and c2.status = c.status
           );

你试过subquerys吗

$get_seen_messages = mysql_query("
    SELECT * FROM
        (SELECT * 
            FROM chat 
            WHERE userto='$login_cookie' 
            AND status='seen' 
            GROUP BY userfrom) as subquery 
    ORDER BY id DESC");
每次在新代码中使用数据库扩展时,它都会被弃用,并且已经存在多年,在PHP7中永远消失。如果你只是在学习PHP,那么就把精力花在学习
PDO
mysqli
数据库扩展上。您的脚本有可能会出错,请查看使用时发生的情况