我需要从mysql获得具有给定id的条目,但版本应为最大。
我有一个条目表。所有条目都有id和version(这两个是表的组合键)。我需要获取具有唯一ID和最高版本的所有条目。如何有效地做到这一点。 1.我是否全部阅读并为每个ID选择最大值。 2.我是否创建一个名为is_latest的列,在其上建立索引,并在放置新条目时将其设置为true,而将旧条目更新为false。 3.别的。 :)
应注意,大多数呼叫将被读取(> 99%)。
让该表具有ID为1且版本从1到n的n个条目
id version name ...
1 1 abcd ...
1 2 abcd ...
1 3 defg ...
我想获得最后一个条目
1 3 defg ...
答案 0 :(得分:2)
在mysql中,您可以使用order by并将单个ID限制为1
select *
from my_table
order by version desc
limit 1
of个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
答案 1 :(得分:1)
我认为您正在寻找MAX()
函数。
SELECT MAX(version) from my_table where id = your_id
您可以在此处获得更多信息:https://sql.sh/fonctions/agregation/max(法国网站)
答案 2 :(得分:0)
请参阅以下数据库提琴: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