教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 MySQL/MariaDB中让查询结果多列合并成一列

MySQL/MariaDB中让查询结果多列合并成一列

发布时间:2017-01-17   编辑:jiaochengji.com
教程集为您提供MySQL/MariaDB中让查询结果多列合并成一列等资源,欢迎您收藏本站,我们将为您提供最新的MySQL/MariaDB中让查询结果多列合并成一列资源
下面我们来看一篇关于MySQL/MariaDB中让查询结果多列合并成一列哦,希望这篇文章对各位能够带来帮助哦。

最近遇到一个查询需求,就是select多列时如何显示成一列--举例说就是假如表是3列2行:

1 2 3
4 5 6
如何让查询结果变成一列多行:

1
2
3
4
5
6
首先创建测试表

create table test(c1 int,c2 int,c3 int); 
insert into test values(1,2,3),(4,5,6),(7,8,9),(10,11,12); 

 

方法一:用union

select c1 from test union select c2 from test union select c3 from test; 

 

这种方法最易理解,就是查询三次,一次一个列,然后合并;但缺点就是扫描表3次

方法二:插入换行符

mysql -Bse "select concat(c1,'@@',c2,'@@',c3)from test ;" | sed 's/@@/\n/g' 

 

这种方法也较易理解,字段与字段之间插入换行符;相比第一种方法优点是只需访问表一次,缺点是需要借助外部文本处理工具

方法三:用case

select case when rownum=1 then c1 when rownum=2 then c2 when rownum=3 then c3 else ''  end    from  test,(SELECT @rownum:=@rownum 1 AS rownum FROM (SELECT @rownum:=0) r, test) b; 

 

这种方法是我同事shengkaisu想的,较难理解:生成行号rownum,然后生成的行号表和旧表做笛卡尔积,rownum为1就选第一列,rownum为2就选第二列...........

您可能感兴趣的文章:
MySQL/MariaDB中让查询结果多列合并成一列
Mariadb/MySQL 安装及配置在Linux系统中
Linux高可用(HA)之Corosync Pacemaker DRBD MySQL/MariaDB实现高可用MySQ/MariaDB集群
mysql转mariadb数据库平滑过渡例子
MariaDB与MySQL数据库之间有什么区别
MariaDB数据库的缓存配置详解
Ubuntu 14.04 安装部署 MariaDB 数据库步骤
mariadb multi-source replication(mariadb多主复制)
mysql入门教程,mysql基本语法
mysql索引优化实例分享

[关闭]
~ ~