2012-06-12 17 views
7

द्वारा ऑर्डर करेंऔर IS NULL एसक्यूएल में गठबंधन करने का कोई तरीका है ताकि कॉलम शून्य न हो, तो कॉलम द्वारा ऑर्डर कर सकता है, लेकिन अगर यह शून्य है, तो ऑर्डर एक और कॉलम द्वारा?कॉलम 1 द्वारा ऑर्डर करें यदि कॉलम 1 शून्य नहीं है, अन्यथा कॉलम 2

धन्यवाद!

+1

[http://stackoverflow.com/questions/5055540/order-by-countcolumns-not-null][1] - यहाँ सवाल का जवाब है [1]: http: // stackoverflow.com/questions/5055540/order-by-countcolumns-not-null – yAnTar

उत्तर

20

कुछ की तरह:

ORDER BY CASE 
    WHEN Column1 IS NOT NULL THEN Column1 
    ELSE Column2 
END 

लेखन के रूप में ही है:

ORDER BY IFNULL(Column1, Column2) 
+0

आपको बहुत बहुत धन्यवाद। मैं इस वाक्य को समझ नहीं पा रहा हूं: "सभी शीर्ष के लिए आरोही क्रमबद्ध करते समय मूल्य शीर्ष पर दिखाई देते हैं" क्या आप थोड़ा और समझा सकते हैं? – 1252748

+0

आरोही आरोही क्रमबद्ध होने पर किसी भी मान से छोटा है। यदि आपका डेटा '-1, 0, 1, न्यूल 'आरोही सॉर्टिंग परिणाम' NULL, -1, 0, 1' में है। –

+0

यह 'केस द्वारा ऑर्डर करें जब कॉलम 1 पूर्ण है कॉलम 2 ईएलएसई कॉलम 1 अंतराल मुझे थोड़ा और स्पष्ट लगता है। क्या मैं 'END' कथन का उपयोग करने के लिए _have_ करता हूं? – 1252748

1

आप निम्नलिखित के साथ की कोशिश कर सकते:

ORDER BY ISNULL(firstField, secondField) 
+2

MySQL ISNULL 1/0 लौटाता है, नॉन-नल कॉलम (क्या आपका मतलब है IFNULL?)। –

4

इस

ORDER BY COALESCE(fieldA, fieldB); 
प्रयास करें 0
0

मैं किसी भी टेबल्स एटीएम जहां मैं इसे परीक्षण कर सकते है नहीं है, लेकिन यह काम कर सकते हैं, कम से कम यह useable डेटा के बिना किया:

SELECT * FROM table1 
LEFT JOIN table2 ON table1.id = table2.id 
WHERE 1 
ORDER BY IF(table2.id, table1.id, table1.name) 

इसके अलावा, मैं आदेश अगर table2 कैसा दिखेगा कैसे पता नहीं है। आईडी कभी-कभी शून्य होती है, बहुत अस्थिर लगती है।

+0

एसक्यूएल में कोई 'आईएफ' नहीं है (निश्चित रूप से पोस्टग्रेज़ के लिए नहीं) –

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