Mysql行連線,列連線

2021-09-19 11:04:48 字數 1662 閱讀 4057

關係型資料庫在應用時,有時想把結果進行一些連線,包括行連線,列連線等有時都會用到。本文介紹幾個常用的mysql連線函式。在此基礎上,可以實現較豐富的mysql查詢。

關聯式資料庫查詢時有時希望把查詢結果進行連線,常使用concat實現。

concat(string,string...)
concat函式支援將多個string引數連線成乙個string。如:

|field1|field2|

| tv1 | tv2 |

| tv3 | tv4 |

select concat(filed1,field2) ftom tb;
將返回:

|tv1tv2|

|tv3tv4|

不同型別的filed會有對應的轉碼方式。mysql的concat函式在連線字串的時候,只要其中乙個是null,那麼將返回null。

concat函式在連線字串時沒有指定連線符的功能。concat_ws是concat with separator的意思。該函式功能和concat類似,只是在連線時可以指定separator。

concat_ws(separator,string,string...)
select concat_ws(',',field1,field2) from tb;
將得到

|tv1,tv2|

|tv3,tv4|

concat_ws不會忽略空值,但會忽略null。

前面兩個concat函式都是在不同的列上進行連線,或連線字串,有時想把某一列的所有值連線起來。這時就要用到group_concat函式。

group_concat實際上是乙個聚合函式,可以實現把一列的值聚合到一起,聚合的方法不同於count,sum等計數函式,而是concat。

group_concat([distinct] expr [,expr ...]

[order by

[asc | desc] [,col_name ...]]

[separator str_val])

最簡單的使用:

select group_concat(field1) from tb;
|tv1,tv3|
把field1這一列的所有值拿出來連線在一起組成乙個字串返回。

因為是聚合函式,所以和group組合起來使用,將在組內對列進行連線。同時,也可以傳多個field進去,此時把每一行的多列連線起來組成乙個列,再對列進行連線。預設情況下列內連線符號是',',也可以在引數中指定separator。

連線過程中還可以指定組內排序。如:

select group_concat(field1 order by field1 desc separator '-');
將得到

|tv3-tv1|
除了在mysql中使用類似的函式之外,在hive中也有cancat,group_concat函式,使用方法類似,在odps中也有wm_concat具備和group_concat類似的功能。

mysql列連線 Mysql行連線,列連線

關係型資料庫在應用時,有時想把結果進行一些連線,包括行連線,列連線等有時都會用到。本文介紹幾個常用的mysql連線函式。在此基礎上,可以實現較豐富的mysql查詢。concat 關聯式資料庫查詢時有時希望把查詢結果進行連線,常使用concat實現。concat string,string.conca...

mysql列連線 mysql 多列連線

1 concat 函式 1.1 mysql的concat函式可以連線乙個或者多個字串,如 mysql select concat 10 concat 10 10 1 row in set 0.00 sec mysql select concat 11 22 33 concat 11 22 33 11...

mysql有行遷移嗎 行連線 行遷移

1.檢測行遷移和行連線 select value from v sysstat where name table fetch continued row 上面反回的是由語句訪問的鏈結行的數量。2.獲得表的鏈結行的數目 分析表 analyze table owner.table name comput...