最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
MySQL/MariaDB中让查询结果多列合并成一列
时间:2016-08-12 编辑:简简单单 来源:一聚教程网
最近遇到一个查询需求,就是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登录、访问及退出操作解析 10-18
- sql语句 update字段null不能用is null问题解析 09-28
- SQL Server ISNULL 不生效原因及解决分析 09-28
- 关于if exists的用法及说明分析 09-28
- Access数据库日常维护方法 09-28
- Oracle 删除大量表记录操作介绍 09-27