Php MySQL:按ID对分组结果排序
我在分组时,按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'
$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
数据库扩展上。您的脚本有可能会出错,请查看使用时发生的情况