繁体   English   中英

如何有效地获取mysql表中具有最高版本的条目

[英]How to efficiently get a entry with highest version in mysql table

我需要从给定id的mysql获取一个条目,但版本应该是最大的。

我有一张参赛表。 所有条目都有id和version(这两个是表的复合键)。 我需要获得具有唯一ID和最大版本的所有条目。如何有效地完成它。 1.我是否全部阅读并为每个id选择最大值。 2.我创建一个名为is_latest的列,索引并在将新条目更新为false时将其设置为true。 别的东西。 :)

应该注意的是,大多数呼叫都将被读取(> 99%)。

让表有n个条目,id为1,版本从1到n

id  version  name  ...
1   1        abcd  ...
1   2        abcd  ...
1   3        defg  ...

我想得到最后一个条目

1   3        defg  ...

在mysql中,您可以使用order by并将1限制为单个id

select  * 
from my_table  
order by  version desc 
limit 1 

对于几个id
使用内连接最多

select * 
from my_table m 
inner join (
  select  id, max(version) max_ver 
  from my_table 
  group by id 
  ) t  on t.max_ver  = m.version  and t.id = m.id

我想你正在寻找MAX()函数。

SELECT MAX(version) from my_table where id = your_id

您可以在此处获得更多信息: https//sql.sh/fonctions/agregation/max (法语网站)

示例: https//www.db-fiddle.com/f/tJHG1JT6RJLGJJoamYHXzQ/1

请参阅此db-fiddle: https//www.db-fiddle.com/f/wMxb7S5tCGVA8gsXLHUHS3/0

SELECT t2.id, t2.version, t1.name
FROM my_table t1
JOIN (
    SELECT id, max(version) version FROM my_table GROUP BY id
) t2 ON t1.id = t2.id AND t1.version = t2.version

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM