चूंकि 1 < 3 < 77 < 123
, एक साधारण ORDER BY id
पर्याप्त होगा।
अगर, हालांकि, आप इस तरह से ऑर्डर करना चाहते हैं:77, 3, 123, 1
, तो आप फ़ंक्शन का उपयोग कर सकते हैं FIELD()
:
SELECT id, name
FROM mytable
WHERE id IN (77, 3, 123, 1)
ORDER BY FIELD(id, 77, 3, 123, 1)
यदि आपकी क्वेरी FIELD
में आपकी सूची से अधिक पंक्तियों से मेल खाती है
FIELD
रिटर्न 0
जब कोई पंक्ति आपके द्वारा सूचीबद्ध किसी भी आईडी से मेल नहीं खाती, यानी सूचीबद्ध आईडी के लिए दी गई संख्याओं से छोटी संख्या। इसका अर्थ है, यदि आपकी क्वेरी आपके द्वारा सूचीबद्ध पंक्तियों से अधिक पंक्तियों से मेल खाती है, तो वे पंक्तियाँ पहले दिखाई देंगी। उदाहरण के लिए:
SELECT id, name
FROM mytable
WHERE id IN (77, 3, 123, 1, 400)
ORDER BY FIELD(id, 77, 3, 123, 1)
इस उदाहरण में, आईडी वाली पंक्ति 400
पहले दिखाई देगा। यदि आप चाहते हैं कि वे पंक्तियाँ अंतिम दिखाई दें, तो बस आईडी की सूची को उलट दें और DESC
add जोड़ें :
SELECT id, name
FROM mytable
WHERE id IN (77, 3, 123, 1, 400)
ORDER BY FIELD(id, 1, 123, 3, 77) DESC