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