Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
mysql/php,按用户ID分组,按时间排序_Mysql - Fatal编程技术网

mysql/php,按用户ID分组,按时间排序

mysql/php,按用户ID分组,按时间排序,mysql,Mysql,我有一个表,其中包含userID、highscore和时间戳 我想按时间戳排序,这样最新的条目位于顶部,并且,在列表中不显示任何用户ID两次,因此,它们需要分组 我还需要按分数排序 $sql="SELECT * FROM $table GROUP BY userID ORDER BY time DESC"; $sql2=按用户ID顺序按分数描述从$table GROUP中选择* 此时,我看到GROUPBY是首先完成的,所以我可能只是得到一些随机的时间戳/戳记。我需要先订购,然后分组。但是,如

我有一个表,其中包含userID、highscore和时间戳

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

我还需要按分数排序

$sql="SELECT * FROM $table GROUP BY userID  ORDER BY time DESC";
$sql2=按用户ID顺序按分数描述从$table GROUP中选择*

此时,我看到GROUPBY是首先完成的,所以我可能只是得到一些随机的时间戳/戳记。我需要先订购,然后分组。但是,如果切换Group by和Order by,则会出现错误

有人能帮我吗?谢谢。

在订购之前总是先分组。要在分组前对记录进行排序,有两种方法:

子查询中的排序依据,然后应用分组依据。这通常不是一种更好的方法,因为运行子查询非常昂贵,特别是当您有许多记录时。对于少量的记录,这将是好的

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

更好的解决方案是在子查询中获取MAXtime,然后在userID和max time上将其连接到表中

选择p1。* 从$table t1开始 内连接 选择maxtime maxtime,用户ID 从$table开始 按用户ID分组 t2 在t1.userID=t2.userID上 t1.time=t2.MaxTime 按t1.time DESC排序

我是从头开始写的

HTH

可能重复的