PostgreSQL क्वेरी को अल्पविराम से अलग की गई सूची के रूप में परिणाम देने के लिए


95

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

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



उपरोक्त "डूप" प्रासंगिक और उपयोगी था, विशेष रूप से विशेष रूप से array_agg()फ़ंक्शन।
जे टेलर

जवाबों:


208

SELECT string_agg(id::text, ',') FROM table

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


अभी यह उपयोगी पाया। धन्यवाद!
Gooddadmike

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

17
@ जेजेडसी, या इससे भी आसान:string_agg(id::text, ',')
अल्फा नावा

6
यदि आप कॉलम को सॉर्ट करना चाहते हैंselect string_agg(id, ', ' order by id desc) from table
एमए हुसैन टोनू

1
मैं अपनी क्वेरी के साथ डुप्लिकेट में भाग गया लेकिन इसे साथ में हल कियाSTRING_AGG(DISTINCT customer_name, ',')
क्रिस्टोइकी

51

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

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


1
SELECT array_to_string( id, ',' ) AS id FROM table
एलेक्स आर।

13

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

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

परिणामी myfile.csv में CSV कॉलम हेडर के रूप में SQL परिणामसेट कॉलम नाम होगा, और CSV पंक्तियों के रूप में क्वेरी ट्यूपल्स।

h / t http://pookey.co.uk/wordpress/archives/51-outputting-from-postgres-to-csv


0

उसी के लिए array_to_string () और array () फ़ंक्शन का उपयोग करें।

select array_to_string(array(select column_name from table_name where id=5), ', ');

यह उपयोग करने से बेहतर कैसे है string_agg()?
a_horse_with_no_name

-1
SELECT array_agg(id, ',') FROM table

{1,2,3,4}

मैं Postgres 11 का उपयोग कर रहा हूं और EntityFramework इसे पूर्णांक के सरणी के रूप में ला रहा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.