यह मौलिक रूप से सरल . हो सकता है :
SELECT DISTINCT ON (b, c, e, f)
b, c, e, f, id -- add more columns freely
FROM (<duplicate query here>) sub
ORDER BY b, c, e, f, (a IS NOT NULL), id
-
आपकी डुप्लीकेट क्वेरी में सभी कॉलम हैं।
JOIN
. की कोई आवश्यकता नहीं है फिर से आधार तालिका में। -
मानक SQL
DISTINCT
. के पोस्टग्रेज़ एक्सटेंशन का उपयोग करें :DISTINCT ON
: -
Postgres में एक उचित बूलियन प्रकार है। आप
ORDER BY
कर सकते हैं सीधे बूलियन अभिव्यक्ति। अनुक्रमFALSE
. है (0),TRUE
(1),NULL
(शून्य)। यदि a NULL है, तो यह व्यंजकFALSE
है और पहले सॉर्ट करें:(a IS NOT NULL)
. बाकी का आदेशid
. द्वारा दिया गया है . वोइला। -
ID
. का चयन स्वतः होता है। अपने विवरण के अनुसार आप इस क्वेरी में चयनित पंक्ति की आईडी चाहते हैं। करने के लिए और कुछ नहीं। -
आप शायद इसे सीधे अपनी डुप्लीकेट क्वेरी में एकीकृत कर सकते हैं।