मुझे पता है कि यह एक पुराना प्रश्न है, लेकिन मैं अभी अपने सिर में एक छोटे से उदाहरण के माध्यम से चला गया जिसने मुझे यह समझने में मदद की कि पोस्टग्रेस के पास कॉलम द्वारा चयन डिस्टिंट/ऑर्डर पर यह अजीब प्रतिबंध क्यों है।
कल्पना कीजिए कि आपकी रुपयेवीपी तालिका में निम्न डेटा है:
event_id | start_time
----------+------------------------
0 | Mar 17, 2013 12:00:00
1 | Jan 1, 1970 00:00:00
1 | Aug 21, 2013 16:30:00
2 | Jun 9, 2012 08:45:00
अब आप उनके संबंधित start_times द्वारा आदेशित विशिष्ट event_ids की एक सूची प्राप्त करना चाहते हैं। लेकिन 1
कहां होना चाहिए जाओ? क्या यह पहले आना चाहिए, क्योंकि एक टपल 1 जनवरी, 1970 को शुरू होता है, या 21 अगस्त, 2013 के कारण यह अंतिम होना चाहिए?
चूंकि डेटाबेस सिस्टम आपके लिए वह निर्णय नहीं ले सकता है और क्वेरी का सिंटैक्स उस वास्तविक डेटा पर निर्भर नहीं हो सकता है जिस पर वह काम कर रहा हो (event_id
मानते हुए) अद्वितीय है), हम केवल SELECT
. के कॉलम द्वारा ऑर्डर करने तक ही सीमित हैं खंड।
वास्तविक प्रश्न के लिए - मैथ्यू के उत्तर का एक विकल्प MIN
. जैसे समग्र कार्य का उपयोग कर रहा है या MAX
छँटाई के लिए:
SELECT event_id
FROM Rsvp
GROUP BY event_id
ORDER BY MIN(start_time)
start_time
. पर स्पष्ट समूहीकरण और एकत्रीकरण डेटाबेस को परिणाम टुपल्स के स्पष्ट क्रम के साथ आने की अनुमति दें। हालांकि, ध्यान दें कि इस मामले में पठनीयता निश्चित रूप से एक मुद्दा है;)