我有一张数据表:
ID Version Major Minor Revision
1 00000000004 00000000000 00000000012 0000000015
2 00000000004 00000000000 00000000012 0000000015
3 00000000004 00000000000 00000000013 0000000001
4 00000000004 00000000000 00000000013 0000000002
5 00000000004 00000000000 00000000013 0000000008
6 00000000004 00000000000 00000000013 0000000008
7 00000000004 00000000000 00000000014 0000000007
8 00000000004 00000000000 00000000014 0000000008
9 00000000004 00000000000 00000000014 0000000009
10 00000000004 00000000000 00000000014 0000000009
11 00000000004 00000000000 00000000014 0000000009
12 00000000004 00000000000 00000000014 0000000009
13 00000000004 00000000000 00000000014 0000000009
14 00000000004 00000000000 00000000014 0000000009
15 00000000004 00000000000 00000000014 0000000010
16 00000000004 00000000000 00000000014 0000000011
我想连接Version,Major,Minor和Revision字段并计算版本的重复行:
DB Version Count
V4.0.12.15 2
V4.0.13.01 1
V4.0.13.02 2
V4.0.13.08 2
V4.0.14.07 1
V4.0.14.09 6
V4.0.14.10 1
V4.0.14.11 1
到目前为止,我可以使用以下方法连接数据库版本:
SELECT CONCAT (
'V'
RIGHT(LTRIM(Version) 1)
'.'
RIGHT(LTRIM(Major) 1)
'.'
RIGHT(LTRIM(Minor) 2)
'.'
RIGHT(LTRIM(Revision) 2)
) AS 'DB Version' FROM DBversion;
但我正在努力解决如何提取数据库版本的计数。
答案 0 :(得分:0)
你解决了困难的部分。其余的只是聚合:
SELECT CONCAT(
'V'
RIGHT(LTRIM(Version) 1)
'.'
RIGHT(LTRIM(Major) 1)
'.'
RIGHT(LTRIM(Minor) 2)
'.'
RIGHT(LTRIM(Revision) 2)
) AS "DB Version",
COUNT(*)
FROM DBversion
GROUP BY "DB Version";
注意:请勿在{{1}}和concat
之间留出空格。 MySQL并不喜欢这样。
答案 1 :(得分:0)
这样的事情
select
version,
count(*)
from (
select
concat('V', concat_ws('.',
Version + 0,
Major + 0,
Minor + 0,
Revision + 0)
) version
from DBversion
) concatenated
group by version
然而,强烈建议不要采用这种方式,因为这样的查询性能会非常差。
更好的解决方案是创建中间表,计算版本号,然后从该中间表中使用group by
进行查询。