![]() |
1
1
基础问题是select是一个聚合查询,因为它包含一个group by子句:
SQL As Understood By SQLite - SELECT 因此,该列对该组的值将是该组的列的任意值(我怀疑,首先根据扫描/搜索,因此是较低的值):-
因此,简而言之,当列值是聚合查询时,不能依赖于不属于组/聚合的列值。 因此必须使用聚合表达式来检索所需的值,例如max(app.time)。但是,您不能按这个值排序(不确定为什么按这个值排序在效率方面可能是固有的) 然而您可以使用查询构建CTE,然后在不涉及聚合的情况下进行排序。 考虑一下以下问题,我认为这类似于你的问题:
结果是:
其中,虽然每个组的最新时间已被提取,但最终结果没有按您的想法进行排序。 将其封装到CTE中可以修复该问题,例如:-
现在:
|
![]() |
2
1
因为你需要每个小组的最新日期,你可以
|
![]() |
3
1
你可以用窗户
|
![]() |
4
0
|
![]() |
5
0
尝试按ID和时间分组,然后按时间排序。
我假设ID在应用程序表中是唯一的。 如何分配ID?也许你有足够的 按ID排序描述 |
|
user9630128 · 如何按升序LINQ对列表排序 7 年前 |
![]() |
Calflamesfann · 如何为每个不同的代码值选择不同的项目 7 年前 |
![]() |
Pablo DelaNoche · 按案例排序时语句/多个 7 年前 |
![]() |
Andrew · 如何根据字母排序顺序设置int值 7 年前 |
![]() |
nasic · SQL order by找不到解决方案 7 年前 |
![]() |
Shawn · 分组依据之外的按列排序 7 年前 |
![]() |
Simsar78 · SQL选择GROUP BY并使用特定值联接行 7 年前 |