postgresql 實(shí)現(xiàn)sql多行語句合并一行
多行語句合并一行
三個(gè)表關(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
補(bǔ)充:PostgreSQL合并查詢同一列的多條記錄
昨天遇到一個(gè)sql問題,需要將一個(gè)表中的某一列的多行數(shù)據(jù)拼接成一行
例如:表中有2列數(shù)據(jù):
列1 列2 AAA 企業(yè)1 AAA 企業(yè)2 AAA 企業(yè)3 BBB 企業(yè)4 BBB 企業(yè)5
我想把這個(gè)表變成如下格式:
列1 列2 AAA 企業(yè)1,企業(yè)2,企業(yè)3 BBB 企業(yè)4,企業(yè)5
類似sqlServer中的stuff函數(shù)在PostgreSQL中如何實(shí)現(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;
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
- Postgresql使用update語句的方法示例
- PostgreSQL實(shí)時(shí)查看數(shù)據(jù)庫實(shí)例正在執(zhí)行的SQL語句實(shí)例詳解
- Postgresql 查看SQL語句執(zhí)行效率的操作
- postgresql SQL語句變量的使用說明
- Postgresql的pl/pgql使用操作--將多條執(zhí)行語句作為一個(gè)事務(wù)
- postgresql 賦權(quán)語句 grant的正確使用說明
- PostgreSQL標(biāo)準(zhǔn)建表語句分享
- postgresql 導(dǎo)出建表語句的命令操作
- Postgresql ALTER語句常用操作小結(jié)
- Postgresql開啟SQL執(zhí)行語句收集過程
相關(guān)文章
使用navicat連接postgresql報(bào)錯(cuò)問題圖文解決辦法
我們在日常開發(fā)中有時(shí)候需要用navicate連接postgresql數(shù)據(jù)庫,有時(shí)候會連接不上數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于使用navicat連接postgresql報(bào)錯(cuò)問題圖文解決辦法,需要的朋友可以參考下2023-11-11PostgreSQL的日期時(shí)間差DATEDIFF實(shí)例詳解
PostgreSQL是一款簡介而又性能強(qiáng)大的數(shù)據(jù)庫應(yīng)用程序,其在日期時(shí)間數(shù)據(jù)方面所支持的功能也都非常給力,下面這篇文章主要給大家介紹了關(guān)于PostgreSQL的日期時(shí)間差DATEDIFF的相關(guān)資料,需要的朋友可以參考下2023-04-04如何在PostgreSQL中創(chuàng)建只讀權(quán)限和讀寫權(quán)限的賬號
一個(gè)良好的賬號管理策略對于數(shù)據(jù)庫的安全和數(shù)據(jù)的完整性至關(guān)重要,通過為不同的用戶設(shè)置適當(dāng)?shù)臋?quán)限,可以確保他們只能訪問他們需要的數(shù)據(jù),并防止對敏感數(shù)據(jù)的意外或惡意訪問,本文介紹在 PostgreSQL中創(chuàng)建只讀權(quán)限和讀寫權(quán)限的賬號的步驟和方法,感興趣的朋友一起看看吧2023-08-08Postgresql數(shù)據(jù)庫character?varying和character的區(qū)別說明
這篇文章主要介紹了Postgresql數(shù)據(jù)庫character?varying和character的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07PostgreSQL實(shí)現(xiàn)批量插入、更新與合并操作的方法
這篇文章主要給大家介紹了關(guān)于PostgreSQL實(shí)現(xiàn)批量插入、更新與合并操作的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02PostgreSQL 如何獲取當(dāng)前日期時(shí)間及注意事項(xiàng)
這篇文章主要介紹了PostgreSQL 如何獲取當(dāng)前日期時(shí)間及注意事項(xiàng),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10postgreSQL數(shù)據(jù)庫的監(jiān)控及數(shù)據(jù)維護(hù)操作
這篇文章主要介紹了postgreSQL數(shù)據(jù)庫的監(jiān)控及數(shù)據(jù)維護(hù)操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01