2011-10-18 6 views
15

तो मेरे पास है:mysql क्वेरी के लिए स्पष्ट रूप से सॉर्ट ऑर्डर निर्दिष्ट करें?

ID | Title 
1 | Shirt 
2 | CD 
3 | Cap 
4 | Mp3 
5 | Badge 

अगर मैं इस आदेश द्वारा क्रमबद्ध करना चाहते हैं: 4, 2, 5, 3,1। क्या एक एसक्यूएल क्वेरी करने का कोई तरीका है जहां आप इसे स्पष्ट रूप से निर्दिष्ट करते हैं? कुछ की तरह:

select * from TABLE order by ID(4,2,5,3,1) ?? 
+0

आप "स्थिति" कॉलम कैसे पेश करते हैं और आइटम को ठीक तरह से ऑर्डर करते हैं और स्थिति द्वारा क्रमबद्ध पंक्तियों से पूछताछ करते हैं? आईडी-एस द्वारा चीजों को ऑर्डर करने पर निर्भर करना सिर्फ ... गूंगा है। –

उत्तर

22

असल में, आप आश्चर्यजनक रूप से करीब थे।

select * from TABLE order by field(ID,4,2,5,3,1) 
+1

अच्छा, क्या MySQL- विशिष्ट है? –

+1

@muistooshort हाँ - यह अधिक mysql "funk" है, लेकिन सभी "गैर मानक-अनुरूप" सामान बस इतना आसान है कि इसका विरोध करना बहुत मुश्किल है! – Bohemian

4

आपके द्वारा एक अल्पविकसित लुकअप तालिका के रूप में क्रम में एक मामला उपयोग कर सकते हैं:

select * 
from your_table 
order by 
    case id 
     when 4 then 1 
     when 2 then 2 
     when 5 then 3 
     when 3 then 4 
     when 1 then 5 
    end 
2
select * from TABLE order by ID=1,ID=3,ID=5,ID=2,ID=4; 

आप इस चलाने के लिए और चलो मुझे अपने संदेह जानते हैं: यह के रूप में एक आसान है।

+6

आप अपने तरीके से तैयार हैं। – smathy