选择每个名称的最新记录

时间:2017-04-05 16:36:28

标签: mysql

我将制作更新系统,我想从数据库中获取文件更新。

请求应该给我所有文件,但如果有多个行具有相同的文件名,我只希望这个具有最高值"版本" (数)

因此响应中的文件名将是唯一的。

(真的很抱歉,我不知道怎么说)

2 个答案:

答案 0 :(得分:1)

如果file_version仅用于演示目的而且没有关系值,则可以执行以下操作:

select filename, max(file_version) as file_version
  from your_table
 group by filename;

否则,如果file_version必须与filename相同,那么你可以这样做:

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;

答案 1 :(得分:1)

如果表格很大,

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列添加索引,以使此查询最佳。