我有一個數據庫視圖(viewAll)這些列:如何計算字符串的出現在包含MySQL
軌跡,VARCHAR(10)
MismatchDesc,VARCHAR(200)
此表可以看起來像:
Locus MismatchDesc
HLA-A 435delA;553insG
HLA-B 665subA;776subA;998delG
HLA-B 776subA;998delG
HLA-B 998delG
HLA-A 553insG
我需要製作一個視圖與附加列MismatchCount因此,它看起來像:
Locus MismatchDesc MismatchCount
HLA-A 435delA;553insG 1
HLA-B 665subA;776subA;998delG 1
HLA-B 776subA;998delG 1
HLA-B 998delG 3
HLA-A 553insG 2
目前我有:
CREATE VIEW mismatchCount AS SELECT Locus, MismatchDesc, SUM(IF('%'+MismatchDesc+'%',1,0)) AS MismatchCount FROM viewAll GROUP BY MismatchDescGDNA ORDER BY mismatchCount ASC;
我曾希望這將使用偷偷摸摸的通配符和SUM函數生成我需要的輸出,但它不是,它只是在一個更復雜的方式比產生一個輸出我只是用'計數'。
所以這目前生產輸出:
Locus MismatchDesc MismatchCount
HLA-A 435delA;553insG 1
HLA-B 665subA;776subA;998delG 1
HLA-B 776subA;998delG 1
HLA-B 998delG 1
HLA-A 553insG 1
某處,必須有一個方法來計算每根弦的發生,並且每個實例匹配的字符串?
我不能分開字符串,這是分號分開,因爲我需要統計每個唯一的字符串實例。我希望這是有道理的。
編輯
我不是侷限於我執行查詢,如果有一個更有效,更快捷的方式,請分享的方式,因爲這是處理大量的數據,因此可能很慢。
你如何定義「兩張皮」? –
對不起,回覆遲了,所以SO不允許我評論,因爲代表低。不匹配是一個座標,後面是| del | sub,然後是A | C | T | G +或者是由分號@RickJames分隔的列表。正如問題所解釋的,這些是最多200個字符的VARCHARS。 – CG3