2011-10-11 55 views
0

的一部分,我有这个表:MySQL的总和取决于单元格的内容

id value  ref 
1  0  10000 
2  5  11000 
3  5  11100 
4  2  11101 
5  2  11102 
6  10  12000 
... ...   .... 

我怎样才能做到这一点:

ref sum(value) 
10000 14   <-- 5 + 5 + 2 + 2 
11000 9   <-- 5 + 2 + 2 
11100 4   <-- 2 + 2 
12000 10   <-- and so on 

如果这德兴是有效的,我不能决定,它不会工作,或者我失去了一些东西。

我没有任何SQL查询来展现给你们。

使用正则表达式,也许?我读过它,但没有完全理解。

任何帮助,将不胜感激

回答

0

这可能会为你工作,你的表的真实姓名替换contentsum后:

select rpad(main.prefix, 5, 0) as ref, sum(contentsum.value) as total 
    from (select distinct trim(trailing '0' from ref) as prefix from contentsum) as main 
    join contentsum on contentsum.ref like concat(main.prefix, '%') 
    group by main.prefix 
; 

然而,其总数不匹配你的。相反,当我第一次阅读这个问题时,它们与我认为你加起来的内容相符。

基本上,关键是将表加入ref值的某个函数本身,按左侧进行分组,然后在右侧进行求和。子查询会压缩相同的行并减少一些代码重复,但如果ref值都是唯一的,则不是必需的。

+0

谢谢,我现在意识到。 – Jaxedin