我将更新系统,我想从数据库获取文件更新。为每个名称选择最新记录
请求应该给我的所有文件,但如果有几行用相同的文件名,我想只有这与“版本”(号)最高值
所以文件名中的反应将是独一无二的。
(实在不好意思,我不知道怎么说了吧)
我将更新系统,我想从数据库获取文件更新。为每个名称选择最新记录
请求应该给我的所有文件,但如果有几行用相同的文件名,我想只有这与“版本”(号)最高值
所以文件名中的反应将是独一无二的。
(实在不好意思,我不知道怎么说了吧)
如果FILE_VERSION只是为了演示目的,不保持关系值,你可以这样做:
select filename, max(file_version) as file_version
from your_table
group by filename;
否则,如果FILE_VERSION必须从同一行的文件名,那么你可以这样做:
select distinct a.filename, a.file_version
from your_table a
join (select filename, max(file_version) as file_version
from yourtable
group by filename) b
on b.filename = a.filename
and b.file_version = a.file_version
order by a.filename;
GROUP BY
会有性能比较的影响,如果表是很大的。这是更好地使用LIMIT 1
如果你只需要一个行
SELECT
file,
file_version
FROM
file_history
WHERE
file = 'filename'
AND file_version < 5
ORDER BY file_version DESC
LIMIT 1
你应该添加索引到file_version
列,使这个查询优化。
我想获得所有文件的最新版本(指定最小和最大版本) – TheChilliPL
好的,那么JuveLeo1906的回答是正确的。 – wormi4ok
好的,我会检查它 – TheChilliPL
它会与“where file_version <...”一起工作吗? – TheChilliPL
当然,使用'min(file_version)'而不是'max(file_version)'。 – JuveLeo1906