2011-02-12 15 views
9

उदाहरण के लिए मैं इस कोड है:एसक्यूएल आदेश क्वेरी में महत्व देता

SELECT * 
FROM table_name 
WHERE column_name IN (value6,value4,value11,value19) 

वहाँ क्वेरी में है कि सही अनुक्रम में परिणाम ऑर्डर करने के लिए कोई तरीका है? ऊपर दिया गया कोड table_name का डिफ़ॉल्ट क्रम देता है, पूरी तरह से IN मानों के अनुक्रम को अनदेखा करता है। मुझे पता है कि मैं इन मानों के अनुसार उन्हें सही क्रमबद्ध करने के लिए PHP में अतिरिक्त कोडिंग कर सकता हूं लेकिन इससे एक महत्वपूर्ण ओवरहेड बन जाएगा।

उत्तर

18
SELECT 
    * 
FROM 
    table_name 
WHERE column_name IN (value6,value4,value11,value19) 
ORDER BY FIELD(column_name,value6,value4,value11,value19) 

यहाँ स्पष्टीकरण: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_field

  • क्षेत्र (str, str1, str2, str3, ...)

में str के सूचकांक (स्थिति) रिटर्न str1, str2, str3, ... सूची। स्ट्र 0 नहीं मिला है तो 0 देता है।

0

एक डीबी नास्तिक जवाब के लिए, यहाँ देखो: Order resultset based on WHERE IN clause data हालांकि, मैं एक सरणी का निर्माण है कि डीबी नास्तिक है अच्छा लगेगा।

संबंधित मुद्दे