我在mysql表中有一列是这样的:
appVersion
5.16.0.2889 5.16.0.2893 5.14.0 5.14.0.3 5.12.0.1 5.15.0.14 5.1.0.2 5.12.0.3
我想获得根据前两个数字分开的本列的不同最新版本(abcd,然后仅将ab视为单个版本)
像这里,我们可以说3个不同的最新版本是:
5.16.0.2893
5.16.0.2889
5.15.0.14
5.14.0.3
5.14.0
有人可以建议对此进行mysql查询吗?
最新的定义:假设我们有
5.14.0.9
5.12.0.4
6.1.0.2
5.14.0.12
5.16.1.2
5.12.1.1
最新的3将是
6.1.0.2
5.16.1.2
5.14.0.12
5.14.0.9
从您的问题中我了解到,您需要显示3个最新的“ ab”类版本,但包括所有的子版本。这是将起作用的代码:
select ver from app inner join
(select CONCAT(LPAD(SUBSTRING_INDEX(ver, '.', 1), 50, '0'),
LPAD(SUBSTRING(ver, LOCATE('.', ver)+1, LOCATE('.', ver, LOCATE('.', ver)+1)), 50, '0')) as ver2
from app group by ver2 order by ver2 desc limit 3) as v2
on CONCAT(LPAD(SUBSTRING_INDEX(ver, '.', 1), 50, '0'),
LPAD(SUBSTRING(ver, LOCATE('.', ver)+1, LOCATE('.', ver, LOCATE('.', ver)+1)), 50, '0')) = v2.ver2
order by v2.ver2 desc
内部查询吐出形式为a.0000b的前3个版本,内部联接将所有版本匹配为'ab'='cd'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句