MySQL-使用GROUPBY和DESC
在我的SQL查询中,我使用GROUP BY和ORDER BY子句选择数据。该表在多行中具有相同的编号,每行的时间不同。因此,我想应用一个GROUP BY子句 但是在结果中返回最早的时间和数字,但我需要最新的时间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
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
)