mysql列转行】的更多相关文章

1.正常情况. SELECT JoinEventIds from nt_mainnum 2.使用group_concat函数 select group_concat(JoinEventIds) from nt_mainnum 3.使用SUBSTRING_INDEX和CROSS JOIN将列里面的的数字都拆分出来. 方法一(网上查询的方法): 建配置表: )); INSERT INTO digits VALUES (), (), (), (), (), (), (), (), (), (); ))…
  -- ---------------------------- -- Table structure for `TabName` -- ---------------------------- DROP TABLE IF EXISTS `TabName`; CREATE TABLE `TabName` (   `Id` int(11) NOT NULL AUTO_INCREMENT,   `Name` varchar(20) DEFAULT NULL,   `Date` date DEFAU…
数据表: 列转行:利用max(case when then) max---聚合函数 取最大值 (case course when '语文' then score else 0 end) ---判断  as 语文---别名作为列名 SELECT `name`, MAX( CASE WHEN course='语文' THEN score END ) AS 语文, MAX( CASE WHEN course='数学' THEN score END ) AS 数学, MAX( CASE WHEN cou…
第一种方法:使用序列化表的方法实现列转行 第一种方法:使用UNION的方法实现列转行 第二种方法:使用序列化表的方法实现列转行…
数据表(表名:xsk) +----+------+-----------+-------+ | id | name| course | score | +----+------+-----------+-------+ | 1 | 刘备 | 英语 | 100 | | 2 | 关羽 | 英语 | 99 | | 3 | 张飞 | 英语 | 98 | | 4 | 刘备 | 数学 | 100 | | 5 | 关羽 | 数学 | 99 | | 6 | 张飞 | 数学 | 98 | +----+------…
列转行 SELECT flag ,substring_index(substring_index(t.context,), ) as result FROM ( select 'aa' as flag,'1,2,3,4,5,6,7' as context union all select 'bb' as flag,'1,2,3,4,5,6' as context union all select 'cc' as flag,'1,2,3,4,5' as context union all sele…
-- 列转行动态sql -- 测试表DROP TABLE IF EXISTS `tb_score`; CREATE TABLE `tb_score` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userid` varchar(20) NOT NULL COMMENT '用户id', `subject` varchar(20) DEFAULT NULL COMMENT '科目', `score` double DEFAULT NULL COMMENT '成绩'…
用过Mysql的都知道她有一个很好的实现行转列功能的函数group_concat函数,非常方便 点击(此处)折叠或打开 SELECT * FROM group_test; SELECT id, GROUP_CONCAT(sub_id) FROM `group_test` GROUP BY id; 现在的需求是有上面图二类似的结果集,需要把列二拆分 转换成行记录 我们知道如果是单条记录通过SUBSTRING_INDEX容易实现 点击(此处)折叠或打开 select id,SUBSTRING_IND…
CREATE TABLE `table1` ( `id` ) DEFAULT NULL, `name` ) CHARACTER SET utf8 DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; ,'yang,zheng,song'); ,'zhao,qian,sun'); ,'zhou,wu'); SELECT a.id, substring_index( substring_index( a.name, ), ) name FROM t…
要得到 SELECT name, SUM(CASE course WHEN '语文' THEN score END ) AS '语文', SUM(CASE course WHEN '数学' THEN score END ) AS '数学', SUM(CASE course WHEN '英语' THEN score END ) AS '英语' FROM grade GROUP BY name…
mysql列转行可以通过concat,先分组然后连接. show VARIABLES like '%group%' select @@group_concat_max_len SELECT GROUP_CONCAT(goods_id), as lzh FROM ts_goods WHERE ts_goods.cat_id_1 = OR ts_goods.cat_id_2 = OR ts_goods.cat_id_3 = group by lzh 这里默认的限制是1024字节,可以通过set调整一…
我们有时会将一些数据已逗号的连接方式存在数据库,当取出时我们又想单独一个个取出来 利用help_topic 的自增性 LENGTH(wu.`password`) - length(replace(wu.password,',',''))+1 计算出有多少个数据 join可以循环生成连接 即 一对多 SELECT wu.id,ht.help_topic_id,substring_index(substring_index(wu.`password`,),) FROM `web_userinfo`…
行转列--两种方法第一种方法:行转列我们通常是使用交叉连接和子查询的方式做到,比如下面的例子,查询每个name的对应id的和mysql> select * from user; +----+------+ | id | name | +----+------+ | | a | | | b | | | c | | | d | | | a | | | a | | | c | | | d | +----+------+ 我们用分组查询能得到每个name的id的和,但是是行的形式展示的.mysql>…
今天突然想到了数据库中的行专列与列转行,还不熟悉,在上网看了一下然后就自己写了个例子. 数据库表示这样滴! //全部查询出来SELECT (case type when 'MySql数据库' then id else NULL END) as 'MySql数据库', (case type when 'SqlServer数据库' then id else NULL END) as 'SqlServer数据库', (case type when 'CSharp' then id else NULL…
mysql语法中case when then与列转行的使用场景非常丰富. case语句类似java中条件分支语句的作用,可以类比java中的switch语句或者if语句来学习. 其语法如下: case语句的语法: 转换单个字段时: case 字段 when 字段值 then 返回值 when 字段值 then 返回值 when 字段值 then 返回值 ...... else 默认值 end 别名: 当有多个字段需要转换时: case when 字段名1=字段值11 and 字段名2=字段值2…
例一: SELECT num from user 1.使用group_concat函数得到列转行 select group_concat(num) from user 2.使用SUBSTRING_INDEX和CROSS JOIN将列里面的的数字都拆分出来,把一行变成一列 方法一:建配置表(网上查询的方法): )); INSERT INTO digits VALUES (), (), (), (), (), (), (), (), (), (); )); INSERT INTO sequence…
前言: 由于很多业务表因为历史原因或者性能原因,都使用了违反第一范式的设计模式.即同一个列中存储了多个属性值(具体结构见下表). 这种模式下,应用常常需要将这个列依据分隔符进行分割,并得到列转行的结果. 表数据: ID Value 1 tiny,small,big 2 small,medium 3 tiny,big 期望得到结果: ID Value 1 tiny 1 small 1 big 2 small 2 medium 3 tiny 3 big 总结: 这种方法的缺点在于,我们需要一个拥有连…
mysql数据处理记录(使用的 Workbench) 生成随机数 逗号或分号拼接的字符串分割成多行 多行数据转化成用逗号拼接的字符串 将A表的数据添加到B表 一.生成随机数 生成18位:(19位就加颗0 / 17位就减0) SELECT FLOOR(+ RAND() * 10000000000000000000) 二.将字符串分割(行转列) select a.ID,substring_index(substring_index(a.B,',',b.help_topic_id+1),',',-1)…
mysql之行转列与列转行是数据查询的常见操作,以更好的来展示数据,下面就详细说说怎么实现. 行转列 行转列的话,就是将一条一条的行数据记录转换为一条列数据展示,一般来说是根据某一列来做汇总数据的操作,看着更直观,一目了然. 建表语句: CREATE TABLE `st_grade` ( `id` ) NOT NULL AUTO_INCREMENT, `stu_name` ) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `co…
最近在开发过程中遇到问题,需要将数据库中一张表信息进行行转列操作,再将每列(即每个字段)作为与其他表进行联表查询的字段进行显示. 借此机会,在网上查阅了相关方法,现总结出一种比较简单易懂的方法备用. 一.行转列:将原本同一列下多行的不同内容作为多个字段,输出对应内容. 效果图: 数据库表中的内容: 转换后: 可以看出,这里行转列是将原来的f_subject字段的多行内容选出来,作为结果集中的不同列,并根据f_student_id进行分组显示对应的f_score: 上SQL: select f_s…
一.行转列 有如图所示的表,现在希望查询的结果将行转成列 建表语句如下: CREATE TABLE `TEST_TB_GRADE` ( `ID` int(10) NOT NULL AUTO_INCREMENT, `USER_NAME` varchar(20) DEFAULT NULL, `COURSE` varchar(20) DEFAULT NULL, `SCORE` float DEFAULT '0', PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCR…
一.行转列 即将原本同一列下多行的不同内容作为多个字段,输出对应内容. 建表语句 DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score( id ) NOT NULL auto_increment, userid ) NOT NULL COMMENT '用户id', subject ) COMMENT '科目', score DOUBLE COMMENT '成绩', PRIMARY KEY(id) )ENGINE = INNODB DEFAULT…
行转列 例如:把图1转换成图2结果展示 图1 图2 CREATE TABLE `TEST_TB_GRADE` ( `ID` ) NOT NULL AUTO_INCREMENT, `) DEFAULT NULL, `COURSE` ) DEFAULT NULL, `SCORE` ', PRIMARY KEY (`ID`) ) ENGINE DEFAULT CHARSET=utf8; insert into TEST_TB_GRADE(USER_NAME, COURSE, SCORE) values…
原文地址:http://www.cnblogs.com/xiaoxi/p/7151433.html 一.行转列 即将原本同一列下多行的不同内容作为多个字段,输出对应内容. 建表语句 DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score( id INT(11) NOT NULL auto_increment, userid VARCHAR(20) NOT NULL COMMENT '用户id', subject VARCHAR(20) COMME…
行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现.用传统的方法,比较好理解.层次清晰,而且比较习惯. 但是PIVOT .UNPIVOT提供的语法比一系列复杂的SELECT...CASE 语句中所指定的语法更简单.更具可读性.下面我们通过几个简单的例子来介绍一下列转行.行转列问题. 我们首先先通过一个老生常谈的例子,学生成绩表(下面简化了些)来形象了解下行转列 CREATE TAB…
数据表: 列转行:利用max(case when then) max---聚合函数 取最大值 (case course when '语文' then score else 0 end) ---判断  as 语文---别名作为列名   SELECT `name`, MAX( CASE WHEN course='语文' THEN score END ) AS 语文, MAX( CASE WHEN course='数学' THEN score END ) AS 数学, MAX( CASE WHEN c…
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>MYSQL_WHERE_IN_去掉换行符(列转行)</title> <style type="text/css"> textarea { width: 1000px; height: 500px; } button { hei…
一.行转列 即将原本同一列下多行的不同内容作为多个字段,输出对应内容. 建表语句 DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score(    id INT(11) NOT NULL auto_increment,    userid VARCHAR(20) NOT NULL COMMENT '用户id',    subject VARCHAR(20) COMMENT '科目',    score DOUBLE COMMENT '成绩',   …
原文: http://blog.csdn.net/jx_870915876/article/details/52403472 add by zhj: 本文是以MySQL为例说明的,但其实它适用于所有关系型数据库. 行转列的需求如下,可以发现,行转列时其实是先group by,然后将每个组中的行转为列,使用case-when + 聚合函数, 每个由行转为列的列,都要使用case-when或when-case语句.case-when是怎么作用的呢?组中的每行都经过case-when, 如果组中有N行…
本帖子是行转列的一个逆向操作——列转行,看下面一个面试题 面试题2: 柠檬班第30期学生要毕业了,他们的Linux.MySQL.Java成绩数据表 tb_lemon_grade_column中, 表中字段student_name,Linux,MySQL,Java分别表示学生姓名.Linux成绩.MySQL成绩.Java成绩, 数据图1所示.请写出一条SQL,将图1的数据变成图2的形式(列转行)如下图示: 1:使用上节课学的知识,获得以列的形式展示的成绩数据(行转列) SELECT student…