2011-06-13 10 views
6

क्या कथन द्वारा क्रम में सभी कॉलम के लिए एक बार दिशा प्रदान करना संभव है?क्या आप ऑर्डर में सभी कॉलम के लिए एक दिशा दे सकते हैं?

अर्थात

select * 
from my_table 
order by name desc, type desc 

आप एक बार "desc" का उपयोग कर एक ही बात लिख सकता है?

शायद ऐसा कुछ हो सकता है? (यह काम नहीं करता है)

select * 
from my_table 
order by (name, type) desc 

उत्तर

4

नहीं। SQL मानक उस अनुमति नहीं देता है।

ऐसा कहकर, कुछ आरडीबीएमएस हो सकते हैं जो इस तरह के वाक्यविन्यास का समर्थन करते हैं। मुझे किसी के बारे में पता नहीं है।

7

आप उस के लिए row_number इस्तेमाल कर सकते हैं:

select * 
from my_table 
order by 
     row_number() over (order by name, type) DESC 

अंतिम DESC ROW_NUMBER के आदेश को पलट देगा। तो यह नाम और प्रकार दोनों के लिए एएससी को डीईएससी में फिसल जाएगा।

+0

यह चालाक है। –

+1

समतुल्य होने पर, मैं क्वेरी ऑप्टिमाइज़र पर कठिनाई को पहचानने के लिए भरोसा नहीं करता और केवल एक प्रकार का काम करता हूं, बनाम पंक्ति_नंबर() उत्पन्न करने के लिए एक बार क्रमबद्ध करता हूं और फिर दूसरी दिशा में आउटपुट को सॉर्ट करने के लिए। मैंने desc_number() द्वारा ऑर्डर के लिए व्याख्या योजना पर एक त्वरित नज़र डाली (ए, बी द्वारा क्रमशः डीईएससी 'वर्स' ऑर्डर द्वारा ऑर्डर, बी desc' के पास एक अतिरिक्त कदम था, एक "विंडोज सॉर्ट" था। (लिनक्स पर ईई 10.2.0.4.0 64 बिट) –

+4

मुझे लगता है कि नाम डीईएससी द्वारा ऑर्डर टाइप करना आसान है, टाइप डीईएससी ;-) – DCookie

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

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