萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> 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就選第二列...........

copyright © 萬盛學電腦網 all rights reserved