MySQL का पूरी तरह से गैर मानक अनुपालन GROUP BY
Postgres' DISTINCT ON
. द्वारा अनुकरण किया जा सकता है . इस पर विचार करें:
MySQL:
SELECT a,b,c,d,e FROM table GROUP BY a
यह a
. के प्रति मान 1 पंक्ति प्रदान करता है (कौन सा, आप वास्तव में नहीं जानते)। वास्तव में आप अनुमान लगा सकते हैं, क्योंकि MySQL हैश एग्रीगेट के बारे में नहीं जानता है, इसलिए यह शायद एक प्रकार का उपयोग करेगा ... लेकिन यह केवल a
पर सॉर्ट करेगा , इसलिए पंक्तियों का क्रम यादृच्छिक हो सकता है। जब तक यह छँटाई के बजाय एक बहु-स्तंभ अनुक्रमणिका का उपयोग नहीं करता है। खैर, वैसे भी, यह क्वेरी द्वारा निर्दिष्ट नहीं है।
पोस्टग्रेज:
SELECT DISTINCT ON (a) a,b,c,d,e FROM table ORDER BY a,b,c
यह a
. के प्रति मान 1 पंक्ति प्रदान करता है , यह पंक्ति ORDER BY
. के अनुसार क्रम में पहली होगी क्वेरी द्वारा निर्दिष्ट। सरल।
ध्यान दें कि यहां, यह कुल नहीं है जिसकी मैं गणना कर रहा हूं। तो GROUP BY
वास्तव में कोई मतलब नहीं है। DISTINCT ON
बहुत अधिक समझ में आता है।
रेल ने MySQL से शादी की है, इसलिए मुझे आश्चर्य नहीं है कि यह SQL उत्पन्न करता है जो पोस्टग्रेज में काम नहीं करता है।