我有一个包含版本的字段,值有点不同,并且永远不会满,所以我有5.0.1.1255,4.2.2,4.2.x,4.0,4.x等值。我不确定我想要的是不是很有可能,但我想得到每个点版本的计数,所以我想知道有多少5.0,4.2,4.0但版本将是动态的,所以有一天会有一个5.1,5.2等。
例如,手动让我可以做:
SELECT
(SELECT COUNT(*) as num FROM ticket_meta m WHERE m.product_version LIKE "4.1%") as ext_4_1,
(SELECT COUNT(*) as num FROM ticket_meta m WHERE m.product_version LIKE "4.2%") as ext_4_2
但我当然要不断更新该查询。有没有办法让这更加自动化?
答案 0 :(得分:2)
最高版本9.9,此脚本应该可以工作:
SELECT LEFT(product_version, 3) Version, COUNT(*) as Quantity
FROM ticket_meta
WHERE product_version
GROUP BY LEFT(product_version, 3)
这适用于T-SQL,但我认为它应该起作用,或者至少与MySQL非常相似。
如果您确实需要这些值作为列而不是行,则应该使用数据透视表。
PS:我打赌那些是Ext JS版本。 ;)答案 1 :(得分:0)
这在MySQL中很容易。只需使用substring_index()
:
select substring_index(version, '.', 2) as MajorMinor, count(*)
from tickeet_meta
group by MajorMinor;
这会在单独的行上生成结果,而不是在单独的列中生成结果。要在单独的列中获得结果,需要进行动态调整。