SQL:筛选具有最大值的行
这是我的表格结构:SQL:筛选具有最大值的行,sql,sqlite,greatest-n-per-group,Sql,Sqlite,Greatest N Per Group,这是我的表格结构: File | Version | Function 1 | 1 | 1 1 | 2 | 1 1 | 3 | 1 1 | 2 | 2 2 | 1 | 4 3 | 2 | 5 我只需要它返回这些行 1 |
File | Version | Function
1 | 1 | 1
1 | 2 | 1
1 | 3 | 1
1 | 2 | 2
2 | 1 | 4
3 | 2 | 5
我只需要它返回这些行
1 | 3 | 1
2 | 1 | 4
3 | 2 | 5
这意味着我只想要每个文件都有最新版本的函数
我不想要下面的结果,即不是最新版本的唯一函数ID
1 | 3 | 1
1 | 2 | 2
...
我已经看过了,但它返回了最新的唯一函数ID
查询需要与sqlite3兼容。请注意,如果一个文件的总体最新版本针对不同的函数存在,则每个文件将返回多行。i、 e.如果上面的示例有一个额外的第1、3、2行,那么将为文件1返回2行
执行此操作的有效方法通常是使用“不存在”: 此查询可以利用tablefile上的索引version
这将查询改为:从表中获取对应文件没有更大版本的所有行。在SQLite 3.7.11或更高版本中,使用MAX时,其他值保证来自具有最大值的行:
SELECT File,
MAX(Version) AS Version,
Function
FROM MyTable
GROUP BY File
工作很出色,谢谢你。你能不能看看我的下一个问题,因为你解决了其中的四分之一?
select t.*
from table t
where not exists (select 1
from table t2
where t2.file = t.file and t2.Version > t.version
);
SELECT File,
MAX(Version) AS Version,
Function
FROM MyTable
GROUP BY File