天天看點

mysql 字段包含多個逗号分割的id,需要進行統計每個id對應的另一字段值,sql一行轉多行

最近遇到了需要統計标簽的浏覽量,但是每個label_name下包含了兩個三個不等的标簽ID并且以逗号隔開

mysql 字段包含多個逗号分割的id,需要進行統計每個id對應的另一字段值,sql一行轉多行

(圖1)

類似這種,這時候需要把id 拆分開來分别對應後面的浏覽量,有個類似固定寫法的方法:例如

統計的表名為temp 需要統計,拆分的字段為label_name,最後需要函數處理的字段為view_count(浏覽量)

套入方法為:

SELECT

tp.id,

tp.label_name,

tp.view_count,

substring_index(substring_index(tp.label_name,’,’,b.help_topic_id + 1),’,’,- 1) as label_id

FROM

temp as tp

JOIN mysql.help_topic b ON b.help_topic_id < (length(tp .label_name) - length(REPLACE(tp.label_name, ‘,’, ‘’)) + 1) ORDER BY tp.view_count DESC;

為了讓大家看清楚 我也列印了a.label_name

mysql 字段包含多個逗号分割的id,需要進行統計每個id對應的另一字段值,sql一行轉多行

(圖二)

注意觀察圖二id為194的資料(圖一中最後一行資料就是沒處理之前的id為194的資料,懶得在截圖了),兩個id在label_id列已經拆分,并且對應的浏覽量也分别對應 此時以這個結果集再去統計就會簡單多了 無非就是group by 和 sum 了。希望對大家有幫助