टेक्स्ट कॉलम के लिए कस्टम प्राथमिकताओं का उपयोग करके आदेश


12

यह एक नमूना तालिका है:

name | cat
----------
hugo | sal
bob  | mgr
mike | dev
jeff | mgr
john | dev

दोनों nameऔर catवरचर।

cat इन नामों के लिए एक श्रेणी को दर्शाता है, लेकिन मैं इस प्राथमिकता द्वारा आदेश दिए गए उन सभी को सूचीबद्ध करने के लिए उनके द्वारा प्राथमिकता देना चाहता हूं।

क्या तरीके संभव हैं? मैं निकाल सकते catएक दूसरी तालिका में, एक विदेशी कुंजी आदि का निर्माण लेकिन दिए गए मेरे एप्लिकेशन बहुत सरल है और संरचना गैर अस्थिर हो सकता है: क्या संभावनाएं मैं सूची है mgrपहला नाम, जिसके बाद devनाम, जिसके बाद salनाम ?

जवाबों:


20

यह मानते हुए कि आप अपनी संरचना में बदलाव नहीं कर सकते, आप अपने आदेश में CASE कथन का उपयोग कर सकते हैं:

ORDER BY case cat when 'mgr' then 1 when 'dev' then 2 else 3

यदि आप अपनी संरचना को बदल सकते हैं, हालांकि, आप Categoryश्रेणी कोड और रैंकिंग सहित एक तालिका बना सकते हैं , अपनी नमूना तालिका को तालिका में शामिल कर सकते हैं Categoryऔर इस रैंकिंग के अनुसार क्रमबद्ध कर सकते हैं।


3
ORDER BY (case when `cat` = 'mgr' then 1 
when `cat` = 'dev' then 2 
else 3 end)

यह संरचना वर्डप्रेस में मेरी मदद करती है। उदाहरण के लिए पहले कस्टम पदों का चयन करने के लिए पहले अन्य: पोस्टर और प्रोजेक्ट कस्टम post_typeसे सेलेक्ट होता है wp_postsBY () जब (तब post_type'पोस्टर' तब 1 post_type= = 'प्रोजेक्ट' तब 2 और 3 अंत)


ध्यान दें कि ए) ब्रैकेट वैकल्पिक हैं: एक case अभिव्यक्ति (जैसा कि यह कहा जाता है) वैध है कहीं भी एक कॉलम निर्दिष्ट किया जा सकता है; और b) अभिव्यक्ति को थोड़ा सरल बनाया जा सकता हैcase `cat` when 'mgr' then 1 when 'dev' then 2 else 3 end
कॉलिन के हार्ट हार्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.