सबसे छोटी (और संभवतः सबसे तेज़) क्वेरी DISTINCT ON
, SQL मानक का एक PostgreSQL एक्सटेंशन DISTINCT
खंड:
SELECT DISTINCT ON (1)
id, count, year
FROM tbl
ORDER BY 1, 2 DESC, 3;
संख्याएं SELECT
. में क्रमागत स्थितियों को दर्शाती हैं सूची। स्पष्टता के लिए आप कॉलम के नाम लिख सकते हैं:
SELECT DISTINCT ON (id)
id, count, year
FROM tbl
ORDER BY id, count DESC, year;
परिणाम id
. द्वारा आदेशित किया गया है आदि जिसका स्वागत किया जा सकता है या नहीं। यह किसी भी मामले में "अपरिभाषित" से बेहतर है।
यह एक अच्छी तरह से परिभाषित तरीके से संबंधों को भी तोड़ता है (जब कई साल समान अधिकतम गिनती साझा करते हैं):सबसे पहले वर्ष चुनें। अगर आपको परवाह नहीं है, तो year
ड्रॉप करें ORDER BY
. से . या year DESC
with के साथ नवीनतम वर्ष चुनें ।
कई . के लिए पंक्तियाँ प्रति id
, अन्य क्वेरी तकनीकें (बहुत) तेज हैं। देखें:
- पहले चुनें प्रत्येक ग्रुप बाय ग्रुप में पंक्ति?
- प्रति उपयोगकर्ता नवीनतम पंक्ति पुनर्प्राप्त करने के लिए क्वेरी द्वारा GROUP ऑप्टिमाइज़ करें