gpt4 book ai didi

mysql/php,按userID分组,按时间排序

转载 作者:行者123 更新时间:2023-11-29 00:08:03 24 4
gpt4 key购买 nike

我有一个表,其中包含用户 ID、高分和时间戳。

我想按时间戳排序,以便最新的条目位于顶部,并且不要在列表中两次显示任何用户 ID,因此,它们需要分组。

我还需要它按分数排序。

$sql="SELECT * FROM $table GROUP BY userID  ORDER BY time DESC";

$sql2="SELECT * FROM $table GROUP BY userID ORDER BY score DESC";

此刻,我看到首先完成了分组依据,所以我可能只是得到了一些随机时间戳/戳记。我需要先订购它们,然后将它们分组。但是,如果我切换 Group by 和 Order by,我会收到错误消息。

有人可以帮我吗?谢谢。

最佳答案

GROUPing 总是在 ORDERing 之前完成。要在分组前对记录进行排序,有两种方法:

  1. ORDER BY 在子查询中,然后应用 GROUP BY。这通常不是更好的方法,因为运行子查询非常昂贵,尤其是当您有很多记录时。对于少量记录,这没问题。

    $sql="SELECT * FROM (SELECT * FROM $table ORDER BY time DESC) GROUP BY userID";

  2. 更好的解决方案是在子查询中获取 MAX(time),然后根据 userID 和最大时间将其连接到您的表。

    选择 p1.*
    从 $表 t1
    内部联接
    (
    选择 max(time) MaxTime, userID
    来自$表
    按用户 ID 分组
    ) t2
    在 t1.userID = t2.userID
    AND t1.time = t2.MaxTime
    按 t1.time DESC 排序;

我是从脑海中浮现出来的。

HTH

关于mysql/php,按userID分组,按时间排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26595951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com