2013-04-17 9 views
7

मैं SQL सर्वर के लिए काफी नया हूं। अब मैं इस तरह की एक क्वेरी में आया:टीएसक्यूएल: स्तंभ नाम के बिना एएस द्वारा क्रम

SELECT country FROM Hovercraft.Orders GROUP BY country ORDER BY ASC 

खंड द्वारा क्रम में कोई स्तंभ नाम नहीं दिया गया है। क्या यह संभव है? एसएसएमएस कहते हैं नहीं।

जोर्ग

+4

यह संभव नहीं है, आपको [** 'ORDER BY' ** खंड] (http://msdn.microsoft.com/en-us/library/ms188385.aspx) में 'order_by_expression' रखना होगा)। लेकिन *** *** आप ऐसा क्यों करना चाहते हैं? एसक्यूएल सर्वर को इस मामले में कौन सा कॉलम 'ऑर्डर' करना चाहिए? –

+1

आप इस प्रश्न को _came कहां से भरते हैं? –

+0

यह मेरे लिए कभी काम नहीं किया था। –

उत्तर

10

यह शायद एक छापे की ग़लती है - आप आप से आदेश दे रहे हैं क्या निर्दिष्ट करने के लिए है, यह आउटपुट में कॉलम का नाम, एक अभिव्यक्ति या संख्या हो सकता है। ऐसा नहीं है कि क्वेरी आपने देखा है उत्तरार्द्ध में से एक था सबसे अधिक संभावना है, कि बस स्तंभ संख्या 1 छोड़े गए - तो की तरह:

SELECT country FROM Hovercraft.Orders GROUP BY country ORDER BY 1 ASC 

- तो इस उत्पादन का (यानी पहले स्तंभ की सामग्री द्वारा आदेश होगा। country)।

+5

+1 आपके लिए लक्षित नहीं है, लेकिन इसे पढ़ने के लिए, ऑर्डिनल स्थिति द्वारा ऑर्डर करना उत्पादन कोड में फंस गया है - एसक्यूएल सर्वर एमवीपी हारून बर्ट्रैंड के पास एक ब्लॉग एंट्री है जो बताती है: [खराब आदतों को किक करने के लिए: ऑर्डिनल द्वारा ऑर्डर] (http : //sqlblog.com/blogs/aaron_bertrand/archive/2009/10/06/bad-habits-to-kick-order-by-ordinal.aspx) – Bridge

+0

धन्यवाद, मार्क।मैं बस यह सुनिश्चित करना चाहता था कि मैंने कभी अनदेखा नहीं किया है। –

1

मैं @ महमूद Gamal से सहमत हूं। लेकिन, यह भी, यह संभव है इस तरह इस तरह के हैक लिखने के लिए है -

SELECT o.country, const_column = 1 
FROM Hovercraft.Orders o 
GROUP BY o.country 
ORDER BY const_column ASC 

इस मामले में, छँटाई प्रदर्शन किया जाएगा, लेकिन पंक्तियों 'क्रम बदल नहीं किया जाएगा।

एमएस एसक्यूएल 2005 को:

Proff for @Martin Smith

एमएस एसक्यूएल 2012 को:

Proff for @Martin Smith

+1

जब मैं 'SELECT *, const_column = 1 से मास्टर .. spt_values ​​ORDER द्वारा const_column ASC' (और यह नहीं देखता कि यह प्रश्न के लिए कैसे प्रासंगिक है) –

+0

पर कोई सॉर्टिंग नहीं किया गया है कृपया बताएं, किसने एक ऋण निर्धारित किया है? @ जोर्ग वीगेल ने पूछा "खंड द्वारा क्रम में कोई स्तंभ नाम नहीं दिया गया है?", इसलिए मैंने केवल उदाहरण के लिए क्वेरी लिखी, जो स्थिर मूल्य को क्रमबद्ध करता है। – Devart

+0

मैंने 2005 के सर्वर संस्करण में इस समस्या का परीक्षण किया। – Devart

0

यह संभव नहीं है! ..

आदेश खंड द्वारा हमेशा स्तंभ नाम या स्तंभ संख्या की आवश्यकता है।

क्या आप कृपया मुझे जवाब दें कि आप इस तरह की स्थिति क्यों चाहते हैं, मुझे लगता है कि आप गतिशील क्वेरी के साथ काम कर रहे हैं या नहीं तो कृपया मुझे बताएं।

एसक्यूएल मानक के अनुसार यह संभव नहीं है।

धन्यवाद।

संबंधित मुद्दे