mysql中把一字段拆分成列模式
2017-02-23 21:00
274 查看
pro_game_info表中type字段值如下:
gtype='即时制,角色扮演,模拟,网络,休闲,解谜,动作,策略'
gtype='即时制,角色扮演,模拟'
需求把gtype值按照','拆分成多列模式值,即
模拟
网络
休闲
解谜
动作
策略
动作
财务
方法如下:
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
gtype='即时制,角色扮演,模拟,网络,休闲,解谜,动作,策略'
gtype='即时制,角色扮演,模拟'
需求把gtype值按照','拆分成多列模式值,即
模拟
网络
休闲
解谜
动作
策略
动作
财务
方法如下:
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
相关文章推荐
- MYSQL 根据逗号拆分字段
- mysql innodb引擎模式的表在服务重启后自动字段值重置为最大自增字段值的问题
- mysql 对字符串字段拆分查询
- mysql 拆分以逗号隔开的字段并应用在in查询
- mysql建表时拆分出常用字段和不常用字段
- mysql把一字段拆分为多行
- 需求:MYSQL表中一个字段用逗号分隔,需要查出来split拆分并依次存入另一个表的一个字段中
- mysql把表中某一字段拆分为多列
- 关于Mysql的Enum和Set字段类型
- Mysql 字段长度说明
- 关于C#(ASP.net)存取MySQL LongText字段的心得
- 关于mysql 字段的那个点为是定界符
- mysql中向表中某字段追加字符串的方法
- mysql 字符字段的更新
- 用JSP+Servlet+JavaBean模式实现一个简单的登录网页设计(JSP+Tomcat+MySQL)
- MySQL字符集与二进制字段
- MySQL字段类型说明
- 关于mysql 字段的那个点为是定界符
- mysql 取得字段属性(metadata)
- 逗号分割的字段值拆分