佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > postgresql 實現(xiàn)sql多行語句合并一行

postgresql 實現(xiàn)sql多行語句合并一行

熱門標簽:百度競價排名 鐵路電話系統(tǒng) 網(wǎng)站排名優(yōu)化 呼叫中心市場需求 地方門戶網(wǎng)站 Linux服務器 服務外包 AI電銷

多行語句合并一行

三個表關(guān)聯(lián)查詢的結(jié)果集為:

SELECT users.name,users.age,users.birthday,roles.name FROM users,users_roles,roles WHERE users_roles.userid = users.id and users_roles.roleid = roles.id

name age birthday role
張三 23 1993-1-1 role1
張三 23 1993-1-1 role2
張三 23 1993-1-1 role3

以下語句執(zhí)行后

SELECT users.name,users.age,users.birthday, array_to_string(ARRAY(SELECT unnest(array_agg(roles.name)) ),',') as roles FROM users,users_roles,roles WHERE users_roles.userid = users.id and users_roles.roleid = roles.id group by users.name,users.age,users.birthday

結(jié)果為:

name age birthday roles

張三 23 1993-1-1 role1,role2,role3

補充:PostgreSQL合并查詢同一列的多條記錄

昨天遇到一個sql問題,需要將一個表中的某一列的多行數(shù)據(jù)拼接成一行

例如:表中有2列數(shù)據(jù):

列1     列2

AAA     企業(yè)1

AAA     企業(yè)2

AAA     企業(yè)3

BBB     企業(yè)4

BBB     企業(yè)5

我想把這個表變成如下格式:

列1       列2

AAA       企業(yè)1,企業(yè)2,企業(yè)3

BBB       企業(yè)4,企業(yè)5

類似sqlServer中的stuff函數(shù)在PostgreSQL中如何實現(xiàn)呢?

查了一些資料,找到2種比較簡單方便的方法,總結(jié)一下。

方法一:

SELECT
 列1, string_agg(列2,',') AS 別名
FROM
 表名
GROUP BY 列1 ;

方法二(推薦使用):

SELECT 
  列1, array_to_string(ARRAY(SELECT unnest(array_agg(列2))),',') AS 別名
FROM 
  表名
GROUP BY 列1;

如果需要排序后再拼接:

SELECT 
  列1, array_to_string(ARRAY(SELECT unnest(array_agg(列2 order by 列2 desc))),',') AS 別名
FROM 
  表名
GROUP BY 列1;

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • postgresql合并string_agg函數(shù)的實例
  • PostgreSQL 實現(xiàn)將多行合并轉(zhuǎn)為列
  • PostgreSQL實現(xiàn)批量插入、更新與合并操作的方法
  • PostgreSQL 字符串拆分與合并案例

標簽:銅川 衡水 蘭州 崇左 黃山 湘潭 仙桃 湖南

巨人網(wǎng)絡通訊聲明:本文標題《postgresql 實現(xiàn)sql多行語句合并一行》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    襄汾县| 惠安县| 阿鲁科尔沁旗| 清水县| 银川市| 绥宁县| 新巴尔虎右旗| 循化| 剑河县| 金川县| 扬中市| 顺义区| 新乡市| 濉溪县| 皋兰县| 广汉市| 托克逊县| 萝北县| 会同县| 汤阴县| 桃园市| 崇文区| 共和县| 麻江县| 武功县| 通道| 大方县| 安乡县| 景德镇市| 安吉县| 彰化县| 潞西市| 当涂县| 长阳| 灵璧县| 图片| 桃江县| 台中县| 沈阳市| 涪陵区| 昭平县|