मैं सोच रहा था कि क्या एक () खंड में मूल्यों के क्रम से दूर (संभवतः एक बेहतर तरीका) हो सकता है।
समस्या यह है कि मेरे पास 2 प्रश्न हैं, एक जो सभी आईडी प्राप्त करता है और दूसरा जो सभी जानकारी को पुनः प्राप्त करता है। पहला आईडी का क्रम बनाता है जो मैं चाहता हूं कि दूसरा ऑर्डर करे। आईडी को सही क्रम में एक () खंड में रखा गया है।
तो यह कुछ ऐसा होगा (अत्यंत सरलीकृत):
SELECT id FROM table1 WHERE ... ORDER BY display_order, name
SELECT name, description, ... WHERE id IN ([id's from first])
मुद्दा यह है कि दूसरी क्वेरी उसी क्रम में परिणाम नहीं लौटाती है जिसमें आईडी को IN () क्लॉज में डाला जाता है।
एक समाधान मैंने पाया है कि सभी आईडी को एक टेम्प्रेचर टेबल में एक ऑटो इंक्रीमेंटिंग फ़ील्ड के साथ रखा जाता है, जिसे बाद में दूसरी क्वेरी में शामिल किया जाता है।
क्या कोई बेहतर विकल्प है?
नोट: जैसा कि पहली क्वेरी "उपयोगकर्ता द्वारा" चलाई गई है और दूसरा एक पृष्ठभूमि प्रक्रिया में चलाया गया है, उप प्रश्नों का उपयोग करके 2 को 1 क्वेरी में संयोजित करने का कोई तरीका नहीं है।
मैं MySQL का उपयोग कर रहा हूं, लेकिन मैं सोच रहा हूं कि यह उपयोगी हो सकता है कि यह नोट किया जाए कि अन्य डीबी के लिए भी क्या विकल्प हैं।
IN
औरFIELD
पैरामीटर समान हैं। प्रोग्राम कोड में ऐसा करना उस अतिरिक्त ज्ञान का उपयोग करके तेज हो सकता है। यदि आपके पास सर्वर का प्रदर्शन है, तो निश्चित रूप से, यह सर्वर के बजाय क्लाइंट पर यह बोझ डालना समझदारी भरा हो सकता है।