2014-09-24 77 views
0

下面一列是我使用的表格:更新與計算值

+-------------+----------+---------------------+ 
| sourceindex | source | pa     | 
+-------------+----------+---------------------+ 
|   0 | this  | 0.13842974556609988 | 
|   1 | is  | 0.26446279883384705 | 
|   2 | a  | 0.26446279883384705 | 
|   3 | book  | 0.13842974556609988 | 
|   4 | ,  | 0.26446279883384705 | 
|   5 | that  | 0.13842974556609988 | 

我想補充這將是結果log(sum(pa))/pa列。

有關我如何做到這一點的任何建議?

+2

添加列並定義進行計算的觸發器。或者更好的做你的選擇中的計算而不添加一列 – 2014-09-24 10:36:16

+0

'log(sum(pa))/ pa'將爲每一行返回相同的值,你是否希望每行都有相同的值? – zaratustra 2014-09-24 10:44:30

回答

1

您可以使用交叉連接來計算log(sum(pa)),在你外,你可以用pa科拉姆

update 
test t 
join (select 
`sourceindex`, `source`, `pa` , log_sum/pa new_col 
from 
test 
cross join (select log(sum(pa)) log_sum 
from test) a 
) t1 
on (t.sourceindex= t1.sourceindex 
    and t.source = t1.source 
    and t.pa = t1.pa 
    ) 
set t.new_col = t1.new_col 

Demo

的每個值,但其更好地劃分的結果,如果您打開邏輯用選定查詢顯示您的計算結果

select `sourceindex`, `source`, `pa` , log_sum/pa new_col 
from 
test 
cross join (select log(sum(pa)) log_sum 
from test) t 

Demo