[英]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 (法语网站)
请参阅此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.