मैंने नीचे अपनी SQL क्वेरी का एक बहुत ही सरल संस्करण चिपकाया है। जिस समस्या में मैं चल रहा हूं वह यह है कि ORDER BY
कथन मेरे सीटीई के चयन परिणामों को प्रभावित कर रहा है। मैं यह समझने में सक्षम नहीं हूं कि यह क्यों है, मेरी मूल सोच यह थी कि सीटीई के भीतर, मैं कुछ SELECT
कथन निष्पादित करता हूं, फिर ORDER BY
को उन परिणामों पर काम करना चाहिए।परिणाम सेट को प्रभावित करके एसक्यूएल सीटीई और ऑर्डर
दुर्भाग्य से मैं जो व्यवहार देख रहा हूं वह यह है कि मेरे आंतरिक SELECT
कथन को 'आइटम' देकर, TOP 10
में नहीं है, द्वारा आदेश से प्रभावित किया जा रहा है।
यहाँ डेटा का एक उदाहरण है: (आईडी के आधार पर उलटे क्रम में इंडेक्स)
ID, Date
9600 2010-10-12
9599 2010-09-08
9598 2010-08-31
9597 2010-08-31
9596 2010-08-30
9595 2010-08-11
9594 2010-08-06
9593 2010-08-05
9592 2010-08-02
....
9573 2010-08-10
....
8174 2010-08-05
....
38 2029-12-20
मेरे मूल क्वेरी:
;with results as(
select TOP 10 ID, Date
from dbo.items
)
SELECT ID
FROM results
क्वेरी:
ID, Date
9600 2010-10-12
9599 2010-09-08
9598 2010-08-31
9597 2010-08-31
9596 2010-08-30
9595 2010-08-11
9594 2010-08-06
9593 2010-08-05
9592 2010-08-02
ORDER BY
;with results as(
select TOP 10 ID, Date
from dbo.items
)
SELECT ID
FROM results
ORDER BY Date DESC
क्वेरी के साथ मेरा क्वेरी रिटर्न:
ID, Date
38 2029-12-20
9600 2010-10-12
9599 2010-09-08
9598 2010-08-31
9597 2010-08-31
9596 2010-08-30
9595 2010-08-11
9573 2010-08-10
9594 2010-08-06
8174 2010-08-05
किसी को भी व्याख्या कर सकते हैं क्यों पहली क्वेरी केवल आईडी तालिका के शीर्ष 10 में हैं वापस आ जाएगी, और दूसरी क्वेरी पूरी तालिका के शीर्ष 10 लौटाता है (सॉर्टिंग लागू होने के बाद)।
मुझे लगता है कि मैं इसे तालिका से शीर्ष 10 पंक्तियों को वापस करने के लिए चाहता था, और फिर उन शीर्ष 10 पंक्तियों द्वारा क्रमबद्ध करने के लिए, पूरी तालिका का ऑर्डर नहीं , और choo उस सेट से शीर्ष 10 तक ... मेरी गलत समझ कहां है? – Brett
@ ब्रेट - आपको डेटाबेस से "टेबल से शीर्ष 10 पंक्तियों" का अर्थ बताएं। मेट्रिक के अनुसार शीर्ष 10? शायद तिथि से क्रमबद्ध? –
तो क्या आप कह रहे हैं कि मुझे सीटीई के भीतर एक आदेश प्राप्त करने की आवश्यकता है? तो: '; परिणाम के साथ (चयन शीर्ष 10 आईडी, आईडी desc द्वारा आदेश आइटम से पोस्ट किया गया)'? .... मेरा भ्रम सीटीई परिणामों के बाहर एक 'ऑर्डर बी' क्यों सीटीई परिणामों को प्रभावित कर रहा है? – Brett