2012-02-16 9 views
60

मैं किसी क्षेत्र द्वारा डीईएससी कैसे ऑर्डर कर सकता हूं, लेकिन पहले मूल मानों को सूचीबद्ध कर सकता हूं?mysql ऑर्डर द्वारा, शून्य पहले, और डीईएससी

तो मैं एक मेज हो रही है:

reuestId | offerId | offerTitle 
1  | 1  | Alfa 
NULL  | 2  | Beta 
2  | 3  | Gamma 

मैं उन्हें का चयन करना चाहते हैं, जिससे कि परिणाम होगा:

ORDER BY [reuestId] IS NULL DESC, [reuestId] DESC 

काम करना चाहिए:

NULL | 2 | Beta 
2 | 3 | Gamma 
1 | 1 | Alfa 

उत्तर

23
SELECT * 
FROM TableX 
ORDER BY (requestId IS NOT NULL) 
     , requestId DESC 
+0

श्रेणी के लिए सबक्वायरी मुझे लगता है कि यह उत्तर पहले के विपरीत है? –

+1

@ xi.lin: नहीं, पहला व्यक्ति डीएसईसी आदेश में 'IS NULL' * (जो अनिवार्य रूप से एक फ़ंक्शन जो 1 या 0 देता है) * रखता है, यह आरोही क्रम में 'शून्य नहीं है' रखता है। वे बराबर हैं। –

+0

@ BlueRaja-DannyPflughoeft व्याख्या के लिए धन्यवाद! मैंने गलत तरीके से सोचा कि IS NULL एक फ़ंक्शन के बजाय फ़िल्टर है। –