2014-02-19 104 views
0

我有兩個MySQL表。MySQL計算不包含特定值的字段數並將其存儲在另一個字段中

1)wfGroups表包含字段

wfs1, wfs2, wfs3, ..., wfs13, wfs14, wfs15 

含有text strings0are blank if there is no value in the field

2)WF表包含標題的字段

totalSteps 

我想要的包含一個count of the number of fields from the wfGroups table that don't contain the "0" or blank values

one wfGroups錶行for each wf table row兩個表中的每一行都有一個userId and wfId場,幫助確定哪些數據屬於一起。我有大約1000行需要計算totalSteps值。

這個查詢只需要運行一次,之後這些字段在更改時會自行更新,所以速度不是問題。

我是新來的SQL,我完全無所適從甚至開始創建此查詢。我發現了一些可能證明有用的代碼,但我不知道如何將它們放在一起,並使其沿着存儲計算值的每一行循環。

+1

你可以從你的表中給我一些樣本,你究竟想要什麼? – Hamidreza

回答

0

使用了加入一個更新:

update wf w 
join wfgroups g on g.userId = w.userId and g.wfId = w.wfId 
set w.totalSteps = wfs1 not in ("0", "") + wfs2 not in ("0", "") + wfs3 not in ("0", "") 
+ wfs4 not in ("0", "") + wfs5 not in ("0", "") + wfs6 not in ("0", "") 
+ wfs7 not in ("0", "") + wfs8 not in ("0", "") + wfs9 not in ("0", "") 
+ wfs10 not in ("0", "") + wfs11 not in ("0", "") + wfs12 not in ("0", "") 
+ wfs13 not in ("0", "") + wfs14 not in ("0", "") + wfs15 not in ("0", ""); 

這工作,因爲在MySQL true1false0,所以加入的條件下,你會得到他們true的次數。

+0

這很好!但我需要計算「0」或「」不出現在字段中的次數......這看起來像會計算它們出現的次數。還是我讀錯了? – Darren

+0

@達倫抱歉,我誤解了你的問題。我已經更新了答案,以統計「'0」或「'」'do * not *出現的次數 – Bohemian

+0

太棒了,謝謝! – Darren

相關問題