2012-08-10 9 views
45

मान लें कि आपके पास SELECT id from table क्वेरी (वास्तविक मामला एक जटिल क्वेरी है) जो आपको कई परिणाम देता है।पोस्टग्रेएसक्यूएल क्वेरी को अल्पविराम से अलग सूची के रूप में परिणाम लौटने के लिए

समस्या यह है कि सभी id एक पंक्ति में वापस कैसे आते हैं, अल्पविराम अलग हो जाते हैं?

+4

के संभावित डुप्लिकेट [Postgresql group_concat बराबर?] (Http://stackoverflow.com/questions/2560946/postgresql-group-concat-equivalent) – podiluska

+0

ऊपर "शिकार" प्रासंगिक था और उपयोगी, खासकर 'array_agg()' फ़ंक्शन विशेष रूप से। –

उत्तर

94

SELECT string_agg(id, ',') FROM table

PostgreSQL 9.0 की आवश्यकता है, लेकिन यह एक समस्या नहीं है।

+0

से अभी यह उपयोगी पाया गया है। धन्यवाद! – gooddadmike

+23

ध्यान दें कि कम से कम मेरे लिए, string_agg अपने पहले तर्क के लिए int लेना पसंद नहीं करता है इसलिए मैंने कुछ ऐसा किया: 'string_agg (CAST (id as varchar),', ')' इसके बजाय। – JZC

+4

@JZC, या इससे भी आसान: 'string_agg (id :: text, ',')' – Alphaaa

37

आप अपनी क्वेरी के साथ सरणी() और array_to_string() फ़ंक्शंस का उपयोग कर सकते हैं। यदि आप {} संकेत निकालना चाहते हैं तो {1,2,3,4,5,6}

,, तो आप सिर्फ array_to_string() फ़ंक्शन और उपयोग का उपयोग कर सकते हैं: SELECT array(SELECT id FROM table); के साथ आप एक परिणाम की तरह मिल जाएगा अल्पविराम विभाजक के रूप में है, तो: SELECT array_to_string(array(SELECT id FROM table), ',') की तरह एक परिणाम प्राप्त होगा: 1,2,3,4,5,6

+0

'' SELECT array_to_string (id, ',') तालिका आईडी से 'आईडी' –

8

आप psql उपयोग कर किसी भी SQL क्वेरी से एक CSV उत्पन्न कर सकते हैं:

$ psql 
> \o myfile.csv 
> \f ',' 
> \a 
> SELECT col1 AS column1, col2 AS column2 ... FROM ... 

जिसके परिणामस्वरूप myfile.csv CSV कॉलम हैडर के रूप में एसक्यूएल resultset स्तंभ नाम होगा, और सीएसवी पंक्तियों के रूप में क्वेरी tuples।

ज/टी http://pookey.co.uk/wordpress/archives/51-outputting-from-postgres-to-csv

+3

हाय, यह समस्या को हल कर सकता है ... लेकिन यह अच्छा होगा अगर आप थोड़ा और स्पष्टीकरण प्रदान कर सकें कि कैसे और क्यों यह काम करता है :) मत भूलना - स्टैक ओवरफ़्लो पर नए शौकों के ढेर हैं, और वे आपकी विशेषज्ञता से एक या दो चीज़ सीख सकते हैं - आपके लिए यह स्पष्ट नहीं है कि आप उनके लिए ऐसा क्यों न हों। –

+1

पूरी तरह से @Taryn। कृपया "कुछ एसक्यूएल" के बदले एक रिलीज उदाहरण दिखाएं। –

संबंधित मुद्दे