2009-08-28 16 views
6

द्वारा आदेश यह अब के लिए मेरे कोड है:आदेश अशक्त द्वारा पहले, तो अन्य चर

SELECT id, number 
FROM Media 
WHERE user = 10 
ORDER BY id, number 

लेकिन मैं जैसे कि यह देखने के लिए चाहते हैं:

SELECT id, number 
FROM Media 
WHERE user = 10 
ORDER BY while(number IS NULL), id 

मुझे क्या करना चाहते है सभी number कि NULL परिणाम के शीर्ष पर हैं, लेकिन जैसे ही number नहीं NULL, तरह से id

है कि संभव है?

मैं mysql का उपयोग करता हूं।

उत्तर

19

क्या कुछ इस तरह के बारे में:

SELECT id, number 
FROM Media 
WHERE user = 10 
ORDER BY (case when number is null then 0 else 1 end), id 

तो संख्या शून्य है, मापदंडों के आधार पर पहले के आदेश 0 हो जाएगा; अन्य 1
जिसका अर्थ है कि प्रत्येक पंक्ति संख्या संख्या

और ध्यान दें कि आईडी को भी वैसे भी हल किया जाएगा।

आप कुछ इस तरह मिल जाएगा:

  • संख्या अशक्त; आईडी = 1
  • संख्या शून्य; आईडी = 2
  • संख्या शून्य; आईडी = 5
  • संख्या शून्य; आईडी = 8
  • संख्या शून्य नहीं है; आईडी = 3
  • संख्या शून्य नहीं है; आईडी = 4
  • संख्या शून्य नहीं है; आईडी = 7
  • संख्या शून्य नहीं है; आईडी = 10
  • संख्या शून्य नहीं है; आईडी = 12
+0

इसी प्रकार मैं इसे सामान्य रूप से भी करता हूं। – RiddlerDev

+0

बढ़िया! तेज़ उत्तर, और मैंने पहली बार कोशिश की जब मैंने कोशिश की। धन्यवाद! – Johan

+0

आपका स्वागत है :-) मजा करो! –

-1

संघ का भी उपयोग किया जा सकता है।

SELECT id, number 
FROM Media 
WHERE user = 10 AND number IS NULL 
ORDER BY id 

UNION 

SELECT id, number 
FROM Media 
WHERE user = 10 AND number IS NOT NULL 
ORDER BY id, number; 
+0

थोड़ा गलत वाक्यविन्यास (अनुपलब्ध ब्रांड्स) के अलावा, यह समझ में नहीं आता है क्योंकि 'यूनियन' व्यक्तिगत चयनों के क्रम के संरक्षण की गारंटी नहीं देगा। इसके अलावा, यह एक अनावश्यक रूप से महंगी निष्पादन योजना ('संख्या' कॉलम पर दो' NULL' चेक) उत्पन्न करता है। –

1

आईएसएनयूएलएल() फ़ंक्शन 1 लौटाता है यदि पैरामीटर शून्य है और 0 अन्यथा।

SELECT id, number 
FROM Media 
WHERE user = 10 
ORDER BY ISNULL(number) DESC, id 

मन आप, कितने मूल्यों यह ऑर्डर करने के लिए की जरूरत है पर निर्भर करता है प्रदर्शन के लिए भयानक: कोई सूचकांक कॉलम द्वारा आदेश के आधार पर इस्तेमाल किया जाएगा।

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