第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Postgresql GROUP_CONCAT等價?

Postgresql GROUP_CONCAT等價?

小唯快跑啊 2019-12-22 20:12:49
Postgresql GROUP_CONCAT等價?我有一個表,我想每個id拉一行,并且字段值連接在一起。例如,在我的表中,我有這個:TM67 | 4  | 32556TM67 | 9  | 98200TM67 | 72 | 22300TM99 | 2  | 23009TM99 | 3  | 11200我想輸出:TM67 | 4,9,72 | 32556,98200,22300TM99 | 2,3    | 23009,11200在MySQL中,我能夠使用聚合函數(shù)GROUP_CONCAT,但這似乎在這里不起作用...是否有等效的PostgreSQL,或其他方法來實現(xiàn)這一點?
查看完整描述

3 回答

?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

從9.0開始,這更容易:

SELECT id, 
       string_agg(some_column, ',')FROM the_tableGROUP BY id


查看完整回答
反對 回復 2019-12-23
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

SELECT array_to_string(array(SELECT a FROM b),', ');

也會這樣做。


查看完整回答
反對 回復 2019-12-23
?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

這可能是一個很好的起點(僅限8.4+版本):

SELECT id_field, array_agg(value_field1), array_agg(value_field2)FROM data_tableGROUP BY id_field

array_agg返回一個數(shù)組,但您可以根據需要對其進行CAST編輯和編輯(請參閱下面的說明)。

在8.4版之前,您必須在使用之前自行定義:

CREATE AGGREGATE array_agg (anyelement)(
    sfunc = array_append,
    stype = anyarray,
    initcond = '{}');

(從PostgreSQL文檔中解釋)

澄清:

  • 將數(shù)組轉換為文本的結果是生成的字符串以花括號開頭和結尾。如果不需要,那些支撐需要通過某種方法去除。

  • 將ANYARRAY轉換為TEXT最能模擬CSV輸出,因為包含嵌入逗號的元素在標準CSV樣式的輸出中是雙引號。array_to_string()或string_agg()(9.1中添加的“group_concat”函數(shù))都不引用帶有逗號的字符串,導致結果列表中的元素數(shù)量不正確。

  • 新的9.1 string_agg()函數(shù)不會首先將內部結果強制轉換為TEXT。因此,如果value_field是整數(shù),則“string_agg(value_field)”將生成錯誤?!皊tring_agg(value_field :: text)”將是必需的。array_agg()方法在聚合后只需要一次強制轉換(而不是每個值的強制轉換)。



查看完整回答
反對 回復 2019-12-23
  • 3 回答
  • 0 關注
  • 476 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號