Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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/5/sql/80.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-使用GROUPBY和DESC_Mysql_Sql_Group By_Sql Order By - Fatal编程技术网

MySQL-使用GROUPBY和DESC

MySQL-使用GROUPBY和DESC,mysql,sql,group-by,sql-order-by,Mysql,Sql,Group By,Sql Order By,在我的SQL查询中,我使用GROUP BY和ORDER BY子句选择数据。该表在多行中具有相同的编号,每行的时间不同。因此,我想应用一个GROUP BY子句 但是在结果中返回最早的时间和数字,但我需要最新的时间 SELECT * FROM TABLE GROUP BY (numbers) ORDER BY time DESC 该查询似乎应该首先应用分组依据,然后应用排序依据。。。但结果似乎并非如此 有没有办法解决这个问题?解决办法是将查询重新写入: SELECT * FROM (SELECT

在我的SQL查询中,我使用GROUP BYORDER BY子句选择数据。该表在多行中具有相同的编号,每行的时间不同。因此,我想应用一个GROUP BY子句

但是在结果中返回最早的时间和数字,但我需要最新的时间

SELECT * FROM TABLE GROUP BY (numbers) ORDER BY time DESC
该查询似乎应该首先应用分组依据,然后应用排序依据。。。但结果似乎并非如此


有没有办法解决这个问题?

解决办法是将查询重新写入:

SELECT * FROM (SELECT * FROM table ORDER BY time DESC) AS t GROUP BY numbers;
这将为您提供组中的最后一条记录


谢谢

根据手册,您可以将描述添加到分组依据列表中: 示例:
按项目1、项目2说明、项目3分组

有无汇总

我已经试过了,它在Ubuntu版本5.5.58中运行。参考页为:

如果您选择了未按分组的列,则在每个组中有多个值的情况下,您得到的行为被显式称为“不确定”。你不能依赖任何特定的行为。你需要整行还是只需要
数字,max(time)
你能提供一些数据行来获得你期望的结果吗?谢谢各位,你们把我带到了正确的方向。相关:理论上,你不能保证总是得到相同的结果。@Karolis同意,你的答案似乎更正确这使用了一个MySQL扩展到
groupby
,它被明确地记录下来,不可靠:。@GordonLinoff我想这就是为什么它对我不起作用,谢谢你的提醒that@GordonLinoff链接断了。你知道我应该找什么吗?谢谢这并没有回答这个问题。他们想在分组前排序。通常只需要代码答案。试着添加一个。谢谢。不,我们不能将组最大值视为一组不相关的数据。例如,这个查询在这里失败:当我试图在一个虚拟表上运行这个查询时,不知何故,我最终得到了所有的行。但是,删除WHERE-inside子查询对我来说很有用。
SELECT * 
FROM table t
WHERE time = (
    SELECT max(time)
    FROM table
    WHERE t.numbers = numbers
)
SELECT * FROM TABLE GROUP BY numbers DESC;
SELECT * FROM table
    WHERE time IN (
        SELECT MAX(time)
            FROM table
            GROUP BY numbers
    )