簡體   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