sql order by - Get result from mysql orderd by IN clause -


मेरे पास निम्न क्वेरी है

  SELECT * इनवॉइस WHERE इनवॉइस_आईडी इन (13, 15 , 9, 27)  

मेरा परिणाम है:

  चालान_आईडी | इनवॉइस_एनम्बर | ... ------------------------------------ 9 | 201006003 | 13 | 201006020 | 15 | 201006022 | 27 | 201006035 |  

जो परिणाम सेट है, मैं चाहता हूं कि इसके अलावा इनवॉइस_आईड (जो कि एक ऑटोमुक्रिमेंट मान है) द्वारा आदेश दिया गया है।

अब मैं परिणाम मेरी क्वेरी में निर्दिष्ट क्रम में चाहता हूँ (13, 15, ...)। क्या उसको प्राप्त करने का कोई तरीका है?

पृष्ठभूमि यह है कि मेरे पास एक DataTable को एक डाटाग्रीड दृश्य के लिए बाध्य किया गया है। उपयोगकर्ता परिणाम को फ़िल्टर कर सकता है और सॉर्ट कर सकता है लेकिन यदि वह परिणाम को प्रिंट करना चाहता है तो मैं डाटाटीबल को प्रिंट करने के लिए उपयोग नहीं कर रहा हूं क्योंकि यह केवल सबसे महत्वपूर्ण स्तंभों में है और इसके बजाय मैं डेटाबेस से पूरे रिकॉर्ड खींचता हूं और इसे मेरे मुद्रण नियंत्रण में पास कर देता हूं ।

मैंने भी मौजूदा डेटाटाले को लापता परिणामों के साथ बढ़ाने का प्रयास किया है लेकिन ऐसा लगता है कि IN (...) क्वेरी की तुलना में धीमी है।

यह बदसूरत है, लेकिन आप ऐसा कर सकते हैं:

  आदेश द्वारा चालान_आड जब 13 तब 0 जब 15 और 1 तब 9 और 2 WHEN वास्तव में, FIELD फ़ंक्शन है:  
  फ़िल्ड द्वारा आदेश (चालान_आईडी, 13, 15, 9, 27)  

कोड>

बाकी की सूची में पहली तर्क की स्थिति देता है

या, यदि आप इसे गतिशील रूप से पैदा कर रहे हैं, तो आप ऐसा कर सकते हैं:

  WHERE इनवॉइस_आईड इन ({list}) FIND_IN_SET द्वारा आदेश (इनवॉइस_आईडी, '{list}' )  

Comments

Popular posts from this blog

windows - Heroku throws SQLITE3 Read only exception -

lex - Building a lexical Analyzer in Java -

python - rename keys in a dictionary -