mysql中把一字段拆分成列模式

pro_game_info表中type字段值如下:

gtype='即時制,角色扮演,模擬,網絡,休閒,解謎,動作,策略'

gtype='即時制,角色扮演,模擬'


需求把gtype值按照','拆分成多列模式值,即

spacer.gif模擬

網絡

休閒

解謎

動作

策略

動作

財務

 

方法如下:

CREATE DEFINER=`gtcom`@`%` PROCEDURE `pro_game_type`()

begin 

DECLARE type int(6);

DECLARE i int DEFAULT 0;

-- 查詢最大','的數量

select max(length(gtype)-length(replace(gtype,',',''))) into type from pro_game_info;


-- 創建輔助表

  CREATE TABLE if not exists help_game_type ( id INT(11),PRIMARY KEY (`id`));

  truncate table help_game_type;

while i <type+1 do 

insert into help_game_type (id) values (i); 

set i =i+1; 

end while;

-- 插入足夠的輔助數據

while i < type+1 do 

insert into help_game_type(id) values (i);  set i=i+1;

end while;


-- 統計結果展示

TRUNCATE table help_game_tmp;

 INSERT into help_game_tmp(gtype,n) 

 select gtype,count(*) n from

 (SELECT substring_index(substring_index(t.gtype,',',b.id + 1),',',- 1) as gtype

FROM pro_game_info t JOIN help_game_type b ON   b.id<(LENGTH(t.gtype) - LENGTH(REPLACE(t.gtype, ',', '')) + 1) and t.gtype<>''

 ) as t

 group by gtype ORDER BY n desc;

 end


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章