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就选第二列...........

时间: 2024-08-27 06:55:44

MySQL/MariaDB中让查询结果多列合并成一列的相关文章

EXCEL2013表格数据怎么将多列合并成一列?

  之前我们讲到了如何将一列数据转置为多行多列,想必大家对这种方法已经了如指掌了,那么碰到对多行多列的数据转置为一列的情况,我们怎么办呢?我相信你们已经有答案了. Excel表格怎么把一列数据转换为多行多列数据? 1.同样我们会看到如下的数据,这样的数据假如一多的话,就会给我们的数据处理带来很多麻烦. 2.首先在倒数第二列的数据下面的第一个单元格中输入=H1,H1表示最后一类数的第一个单元格,下拉快速填充按钮,如下图2所示,尽量多一点. 3.然后再最后一个单元格的右下角,继续往左拉至第一类数据所

sql查询-sql 同一个表中如何把两条数据合并成一条显示,并显示两条数据的全部内容

问题描述 sql 同一个表中如何把两条数据合并成一条显示,并显示两条数据的全部内容 数据库是 sqlserver2008的环境. 是一个列变行的问题 ,请大师帮忙啊. 比如 table表中 字段: id name bianhao address shijian 1 张三 001 北京 2013-12-1 2 李四 001 北京 2013-12-1 最后显示的内容为: 字段: name1 name2 bianhao address shijian 张三 李四 001 北京 2013-12-1 合并

Excel如何多列内容合并成一列

  如下图所示的表格中有4列数据(可以有任意多列),现要求合并成一列显示.如下图所示. 操作步骤: 1.在A6单元格输入公式=B1,如下图所示. 2.复制A6的公式到A6:B21区域,如下图所示. 复制完后你会发现多列的数据已全部显示在A列中,剩下的工作就是把公式转换成数据,删除B:D列即可. 总结:本技巧是使用了类"循环引用"的方法,多列互相引用.这种方法在很多技巧中都有意想不到的作用.

字段-Oracle数据库两个列合并一个列

问题描述 Oracle数据库两个列合并一个列 将Oracle两个列合并成一个列 SQL怎么写? 比如 有一张表n 字段 a b 1 4 2 5 3 6 合并后为 c 1 2 3 4 5 6 解决方案 select A from n union select B from n 解决方案二: select a as c from n union all select b from n 解决方案三: select concat(n.a,n.b) from n; 解决方案四: select a||b f

MYSQL数据库中的现有表增加新字段(列)_Mysql

复制代码 代码如下: ALTER TABLE `数据库名`.`表名` ADD COLUMN `PROCID` VARCHAR(6) DEFAULT '' AFTER `PPIDChanged`; --在MYSQL中,如果是表名,数据库名,列名,在你增加,修改,更新的时候都需要使用ESC键盘下的重音符号,才可以添加,相应的列名或者更新修改. 当然现在大多都是用phpmyadmin或mysql图形化操作工具,更方法,这样的是临时使用的,或没有图形界面的方法.大家可以使用上述的图形化工具操作. 下面推

oracle中如何将两列数据合并成一列?请指教

问题描述 比如表table有两字段a和b,都是number类型的ab2002520036200710合并后显示成:c2002.52003.62007.10还有个问题,怎么让查询出来的number类型的数据保留两位小数? 解决方案 解决方案二:selecttrunc(to_number(2002||'.'||555),2)fromdual;解决方案三:楼上的把我意思弄错了合并时好象应该转换一下类型吧?而我最后一个问题是针对别的字段的,两个问题不要弄混淆,误导大家,谢谢解决方案四:selectto_

GWT grid 列合并

问题描述 我建了一个10行2列的grid的表格;我想让某一行或多行的两列合并成一列,其余的还是两列;不知,有哪位兄弟做过? 解决方案 flextable,最适合你的要求了.

mysql性能优化-慢查询分析、优化索引和配置

目录 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询   2索引及查询优化 三.配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)      key_buffer_size 5)      query_cache_size 6)      record_buffer_size 7)      read_rnd_b

Excel跨越合并使用与两列合并实现方法

第一,excel跨越合并的位置 2007和2010版的Excel跨越合并功能,单击开始--对齐方式--合并后居中旁边的下拉按,可以找到excel跨越合并功能,如下面的截图. 2003版的excel跨越合并功能,单击工具>自定义>命令>类别为格式>命令按钮中找到跨越合并按钮,可以将其拖到菜单工具栏使用.   excel两列合并视具体的数据源不同,合并两列的方法也不同. excel两列合并应用一:日期合并 把AB两列的日期合并在C列,由于日期比较特殊,直接使用连接符号合并会出现格式问题