दिलचस्प पोस्ट
मैं विंडोज़ बैच फ़ाइल कैसे चला सकता हूं लेकिन कमांड विंडो को छुपा सकता हूं? जावा में मिक्सिन लागू करें? IOS 7 शैली ब्लर दृश्य अपलोड करने से पहले छवि का आकार बदलना जांच कैसे करें कि क्या कोई विकल्प चुना गया है? चेकबॉक्स का कॉम्बो बॉक्स? अज्ञात आंतरिक वर्ग से बाहरी चर सेट करना किसी अन्य एप्लिकेशन के विंडो में टेक्स्ट फ़ील्ड से पढ़ना सी ++ 11 में किसी वस्तु से "स्थानांतरित" ऑब्जेक्ट के लिए एक वैध स्थिति का क्या गठन होता है? कैसे एक सी # आवेदन में एक VBScript फ़ाइल को कॉल करने के लिए? घातक त्रुटि: अपरिभाषित विधि को कॉल mysqli_stmt :: fetch_array () एंड्रॉइड – इयरपीस के माध्यम से खेलने के लिए ऑडियो प्राप्त करना लॉगर इंस्टेंस के लिए वैश्विक सेटिंग बदलें कक्षा असंतुलन से निपटना: नुकसान में स्केलिंग योगदान और एसजीडी आईओएस में एक अलग स्थानीयकृत निबट मैन्युअल रूप से लोड कर रहा है

विशिष्ट फ़ील्ड वैल्यू के अनुसार पहले क्रम देना

मेरे पास 3 कॉलम के साथ एक टेबल है:

id | name | priority -------------------- 1 | core | 10 2 | core | 9 3 | other | 8 4 | board | 7 5 | board | 6 6 | core | 4 

मैं priority का उपयोग करके परिणाम सेट को ऑर्डर करना चाहता हूं लेकिन पहले उन पंक्तियों में name=core भले ही कम प्राथमिकता हो। परिणाम इस तरह दिखना चाहिए

 id | name | priority -------------------- 6 | core | 4 2 | core | 9 1 | core | 10 5 | board | 6 4 | board | 7 3 | other | 8 

Solutions Collecting From Web of "विशिष्ट फ़ील्ड वैल्यू के अनुसार पहले क्रम देना"

MySQL FIELD फ़ंक्शन भी है ।

यदि आप सभी संभव मानों के लिए पूर्ण सॉर्टिंग चाहते हैं:

 SELECT id, name, priority FROM mytable ORDER BY FIELD(priority, "core", "board", "other") 

यदि आप केवल "कोर" पहले से ध्यान रखते हैं और अन्य मानों से कोई फर्क नहीं पड़ता:

 SELECT id, name, priority FROM mytable ORDER BY FIELD(priority, "core") DESC 

यदि आप पहले "कोर" द्वारा क्रमबद्ध करना चाहते हैं, और अन्य प्रकार के सामान्य सॉर्ट क्रम में:

 SELECT id, name, priority FROM mytable ORDER BY FIELD(priority, "core") DESC, priority 

यहां कुछ चेतावनियां हैं, यद्यपि:

सबसे पहले, मुझे पूरा यकीन है कि यह केवल mysql- कार्यक्षमता है – सवाल mysql टैग किया गया है, लेकिन आप कभी नहीं जानते

दूसरा, FIELD() कैसे काम करता है, इस पर ध्यान दें: FIELD(priority, "core") के मामले में यह मूल्य के एक-आधारित सूचकांक देता है, यदि "कोर" मान है तो वह 1 पर वापस लौट आएगा। यदि फ़ील्ड का मान सूची में नहीं है, तो यह शून्य देता है यही कारण है कि DESC आवश्यक है जब तक कि आप सभी संभव मान निर्दिष्ट न करें।

आम तौर पर आप ऐसा कर सकते हैं

 select * from your_table order by case when name = 'core' then 1 else 2 end, priority 

विशेषकर MySQL में आप यह भी कर सकते हैं

 select * from your_table order by name <> 'core', priority 

चूंकि MySQL में एक तुलना का परिणाम या तो 0 या 1 और आप उस नतीजे से सॉर्ट कर सकते हैं।

विशिष्ट पंक्तियों को प्राथमिकता देने का एक तरीका उनकी प्राथमिकता के लिए बड़ी संख्या जोड़ना है। आप ऐसा एक CASE वक्तव्य के साथ कर सकते हैं:

  select id, name, priority from mytable order by priority + CASE WHEN name='core' THEN 1000 ELSE 0 END desc 

डेमो: http://www.sqlfiddle.com/#!2/753ee/1

एक तरीका यह है:

 select id, name, priority from table a order by case when name='core' then -1 else priority end asc, priority asc 
 SELECT * FROM cars_new WHERE status = '1' and car_hide !='1' and cname IN ('Executive Car','Saloon','MPV+','MPV5') ORDER BY FIELD(cname, 'Executive Car', 'Saloon','MPV+','mpv5') 

यह Postgres 9+ का उपयोग कर मेरे लिए काम करता है:

 SELECT * FROM your_table ORDER BY name = 'core' DESC, priority DESC 

यह करो:

 SELECT * FROM table ORDER BY column `name`+0 ASC 

+0 जोड़कर इसका अर्थ होगा कि:

 0, 10, 11, 2, 3, 4 

हो जाता है:

 0, 2, 3, 4, 10, 11