[英]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.