एक MySQL क्वेरी में, DISTINCT
विकल्प का उपयोग करते समय, डुप्लिकेट हटा दिए जाने के बाद ORDER BY
लागू होता है? यदि नहीं, तो ऐसा करने का कोई तरीका है? मुझे लगता है कि यह मेरे कोड के साथ कुछ मुद्दों का कारण बन रहा है।DISTINCT से पहले या बाद में आवेदन करने के द्वारा आदेश दिया गया है?
संपादित:
यहाँ मेरी समस्या खड़ी कर रहा है के बारे में कुछ और जानकारी है। मैं समझता हूं कि, पहली नज़र में, यह आदेश महत्वपूर्ण नहीं होगा, क्योंकि मैं डुप्लिकेट पंक्तियों से निपट रहा हूं। हालांकि, यह पूरी तरह से मामला नहीं है, क्योंकि मैं पंक्तियों को क्रमबद्ध करने के लिए INNER JOIN
का उपयोग कर रहा हूं। मैं निम्नलिखित MySQL का उपयोग कर रहा
+----+----------+--------+---------+
| id | threadid | userid | content |
+----+----------+--------+---------+
| 1 | 1 | 1 | Lorem |
| 2 | 1 | 2 | Ipsum |
| 3 | 2 | 2 | Test |
| 4 | 3 | 1 | Foo |
| 5 | 2 | 3 | Bar |
| 6 | 3 | 5 | Bob |
| 7 | 1 | 2 | Joe |
+----+----------+--------+---------+
:
+----+--------+-------------+
| id | userid | title |
+----+--------+-------------+
| 1 | 1 | Information |
| 2 | 1 | FAQ |
| 3 | 2 | Support |
+----+--------+-------------+
मैं भी इस तरह एक और तालिका में पदों का एक सेट है:
इस डेटा युक्त मैं मंच धागे की एक मेज है कहो, सभी थ्रेड प्राप्त करने के लिए क्वेरी, फिर उन्हें नवीनतम पोस्ट के आधार पर क्रमबद्ध करें (मान लीजिए कि उच्च आईडी वाले पोस्ट अधिक हालिया हैं:
SELECT t.*
FROM Threads t
INNER JOIN Posts p ON t.id = p.threadid
ORDER BY p.id DESC
यह काम करता है, और कुछ इस तरह उत्पन्न करता है:
+----+--------+-------------+
| id | userid | title |
+----+--------+-------------+
| 1 | 1 | Information |
| 3 | 2 | Support |
| 2 | 1 | FAQ |
| 3 | 2 | Support |
| 2 | 1 | FAQ |
| 1 | 1 | Information |
| 1 | 1 | Information |
+----+--------+-------------+
लेकिन, जैसा कि आप देख सकते हैं, जानकारी सही है, लेकिन वहाँ डुप्लीकेट पंक्तियों कर रहे हैं। मैं ऐसे डुप्लीकेट को हटाना चाहता हूं, इसलिए मैंने SELECT DISTINCT
का उपयोग किया। हालांकि, यह निम्नलिखित उत्पन्न हुआ:
+----+--------+-------------+
| id | userid | title |
+----+--------+-------------+
| 3 | 2 | Support |
| 2 | 1 | FAQ |
| 1 | 1 | Information |
+----+--------+-------------+
यह स्पष्ट रूप से गलत है, क्योंकि "सूचना" धागा शीर्ष पर होना चाहिए। ऐसा लगता है कि DISTINCT
का उपयोग करके डुप्लिकेट को ऊपर से नीचे तक हटा दिया जाता है, इसलिए केवल अंतिम पंक्तियां ही छोड़ी जाती हैं। यह सॉर्टिंग में कुछ मुद्दों का कारण बनता है।
क्या यह मामला है, या क्या मैं गलत तरीके से विश्लेषण कर रहा हूं?
आपको क्या लगता है कि यह क्या कारण है? इससे क्या फर्क पड़ता है? – eggyal
इससे कोई फर्क क्यों पड़ता है? अलग-अलग आवेदन करने से पहले या बाद में, आदेश एक ही होना चाहिए – Rodolfo
क्या आप हमें जो भी कोशिश कर रहे हैं और वास्तविक समस्या में चल रहे हैं, इसकी एक नमूना क्वेरी दिखा सकते हैं? –