2011-10-11 60 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