PostgreSQL वर्तमान में अस्पष्ट GROUP BY
. की अनुमति नहीं देता है बयान जहां परिणाम तालिका स्कैन किए गए क्रम पर निर्भर हैं, योजना का उपयोग किया जाता है, आदि। इस तरह मानक कहता है कि इसे AFAIK काम करना चाहिए, लेकिन कुछ डेटाबेस (जैसे 5.7 से पहले MySQL संस्करण) कमजोर प्रश्नों की अनुमति देते हैं जो केवल पहला मान चुनते हैं SELECT
. में दिखने वाले तत्वों का सामना करना पड़ा सूची लेकिन GROUP BY
. में नहीं ।
PostgreSQL में, आपको DISTINCT ON
इस तरह की क्वेरी के लिए।
आप कुछ इस तरह लिखना चाहते हैं:
SELECT DISTINCT ON (anwendung.name) anwendung.name, autor.entwickler
FROM author
left join anwendung on anwendung.name = autor.anwendung;
(वाक्यविन्यास अनुवर्ती टिप्पणी के आधार पर सही किया गया)
यह कुछ हद तक MySQL 5.7 के ANY_VALUE(...)
. जैसा है group by
. के लिए छद्म कार्य , लेकिन इसके विपरीत - यह कहता है कि distinct on
. में मान खंड अद्वितीय होना चाहिए, और कोई भी मान कॉलम के लिए स्वीकार्य है नहीं निर्दिष्ट।
जब तक कोई ORDER BY
न हो , इस बात की कोई गारंटी नहीं है कि किन मूल्यों का चयन किया जाता है। आपके पास आमतौर पर ORDER BY
होना चाहिए पूर्वानुमेयता के लिए।
यह भी नोट किया गया है कि min()
. जैसे समुच्चय का उपयोग करना या max()
काम करेगा। हालांकि यह सच है - और DISTINCT ON
का उपयोग करने के विपरीत, विश्वसनीय और पूर्वानुमेय परिणाम देगा। या एक अस्पष्ट GROUP BY
- अतिरिक्त सॉर्टिंग या एकत्रीकरण की आवश्यकता के कारण इसकी प्रदर्शन लागत होती है, और यह केवल क्रमिक डेटा प्रकारों के लिए काम करती है।