बस एक सवाल बहुत इस एक के समान ... पूछाMySQL orderBy एक नंबर, रिक्त स्ट्रिंग (या 0 के) अंतिम
वर्तमान में मैं एक बहुत ही बुनियादी OrderBy मेरे बयान में कर रही हूँ।
SELECT * FROM tablename WHERE visible=1 ORDER BY position ASC, id DESC
इस के साथ समस्या यह है कि 'स्थिति' के लिए रिक्त स्ट्रिंग प्रविष्टियों स्थिति के साथ 0. के रूप में इसलिए सभी प्रविष्टियों का इलाज कर रहे रिक्त स्ट्रिंग के रूप में 1,2,3,4 के साथ उन लोगों से पहले दिखाई देते हैं। उदाहरण के लिए:
'', '', '', 1, 2, 3, 4
या
0, 0, 0, 1, 2, 3, 4
वहाँ है निम्नलिखित आदेश प्राप्त करने का एक तरीका:
1, 2, 3, 4, '', '', ''।
या
1, 2, 3, 4, 0, 0, 0
मुझे लगता समाधान समारोह की जगह किसी तरह का हो सकता है, लेकिन मैं एक समारोह ढूँढने में सक्षम नहीं किया गया है जो गूगल के माध्यम से मैं क्या करता हूं।
कई धन्यवाद,
JonB
मुझे लगता है कि यह काम करेगा लेकिन यह सबसे अच्छा समाधान नहीं है। मुझे लगता है कि 'स्थिति' एक पूर्णांक स्तंभ होना चाहिए, और यदि ऐसा है, तो' केस 'अभिव्यक्ति को पूर्णांक का भी उपयोग करना चाहिए, स्ट्रिंग नहीं। यदि 'स्थिति' एक पूर्णांक या कम से कम संख्यात्मक नहीं है, तो संख्याओं के रूप में क्रमबद्ध करना वैसे भी काम नहीं करेगा। साथ ही, यह समाधान सॉर्ट करने के लिए एक नया कॉलम जोड़ता है, जो प्रदर्शन पर नकारात्मक प्रभाव डाल सकता है।अगर मेरी धारणा है कि 'स्थिति' वास्तव में एक पूर्णांक सही है, तो ओपी का अर्थ संभवतः 'शून्य' मान है जहां उन्होंने 'खाली स्ट्रिंग' लिखा था, जिसका अर्थ है कि आप आसानी से 'ऑर्डर द्वारा कोलेसेस (स्थिति, ~ 0), आईडी डीईएससी' लिख सकते हैं। –
@ रोलैंड: ओपी ने स्पष्ट रूप से स्पष्ट किया कि स्थिति एक स्ट्रिंग है: * "इसके साथ समस्या यह है कि 'स्थिति' के लिए खाली स्ट्रिंग प्रविष्टियां 0 के रूप में मानी जाती हैं।" * – RedFilter
OrbMan हाँ, उन्होंने किया। और मैं कह रहा हूं कि यह शायद समस्या का हिस्सा है। मेरा सुझाव था कि बाद में इसे ऊपर उठाने की कोशिश करने के बजाय इसे उचित डेटा प्रकार सामने दें। –