Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में ORDER BY FIELD और OR से कस्टम क्रम में प्राथमिकता-आधारित सॉर्टिंग

ORDER BY FIELD(col, val1, val2, ...) का उपयोग करके कस्टम प्राथमिकता क्रम में सॉर्ट करें, और WHERE ... OR ... से केवल वांछित मान चुनें।

टेबल बनाएं

mysql> CREATE TABLE DemoTable1884 (Marks INT);

डेटा डालें

mysql> INSERT INTO DemoTable1884 VALUES(55), (97), (79), (87);

98 या 87 में से उच्च प्राथमिकता वाला चुनें

mysql> SELECT * FROM DemoTable1884
    WHERE Marks = 98 OR Marks = 87
    ORDER BY FIELD(Marks, 98, 87)
    LIMIT 1;

आउटपुट:

+-------+
| Marks |
+-------+
|    87 |
+-------+

व्याख्या

  • WHERE Marks = 98 OR Marks = 87 → केवल 98 या 87 वाली पंक्तियाँ (यहां केवल 87 मौजूद)।
  • ORDER BY FIELD(Marks, 98, 87) → 98 को पहली प्राथमिकता, 87 को दूसरी।
  • LIMIT 1 → शीर्ष प्राथमिकता वाली एक पंक्ति।

FIELD() फ़ंक्शन

FIELD(str, val1, val2, ...) -- str की सूची में स्थिति (1-आधारित), नहीं मिलने पर 0
  • FIELD(87, 98, 87) = 2
  • FIELD(98, 98, 87) = 1
  • क्रम: छोटी स्थिति पहले (ASC)।

उपयोग के मामले

  • स्थिति प्राथमिकता: ORDER BY FIELD(status, 'urgent', 'high', 'normal', 'low')
  • श्रेणी क्रम: ORDER BY FIELD(category, 'premium', 'standard', 'basic')
  • विशिष्ट आईडी क्रम: ORDER BY FIELD(id, 5, 3, 8, 1)

नोट

  • FIELD() केस-इनसेंसिटिव स्ट्रिंग तुलना करता है।
  • सूची में मान न होने पर 0 → अंत में सॉर्ट होता है।
  • बड़े डेटासेट पर इंडेक्स उपयोग नहीं कर सकता; छोटी परिणाम सेट के लिए ठीक।
  1. PostgreSQL में MySQL के ORDER BY FIELD() का अनुकरण कैसे करें? PostgreSQL में MySQL के ORDER BY FIELD() का अनुकरण कैसे करें?

    MySQL का ORDER BY FIELD(col, val1, val2, ...) कस्टम क्रम में सॉर्ट करता है। PostgreSQL में CASE एक्सप्रेशन या ARRAY पोजीशन से समान परिणाम प्राप्त कर सकते हैं। उदाहरण डेटा CREATE TABLE country_demo (country_name VARCHAR(10)); INSERT INTO country_demo VALUES (IND), (US), (UK), (IND), (US); विधि 1: C

  1. - MySQL में एक फ़ील्ड द्वारा ऑर्डर करें और बाकी रिकॉर्ड्स को उसी क्रम में प्रदर्शित करें

    MySQL में विशिष्ट रिकॉर्ड को प्राथमिकता देकर ऑर्डर करना कभी-कभी आप एक विशिष्ट रिकॉर्ड को शीर्ष पर रखना चाहते हैं जबकि बाकी रिकॉर्ड्स अपने मूल क्रम में रहें। MySQL में बूलियन अभिव्यक्ति (Id = 101) का उपयोग करके ORDER BY में यह प्राप्त किया जा सकता है। टेबल बनाना ); Query OK, 0 rows affected (0.82 s

  1. - MySQL: GROUP BY के साथ फील्ड कैसे अपडेट करें?

    समस्या MySQL सीधे UPDATE में GROUP BY का समर्थन नहीं करता। समाधान: ORDER BY LIMIT का उपयोग करें। उदाहरण टेबल बनाएं: ); डेटा डालें: INSERT INTO DemoTable2018 (EmployeeName, EmployeeSalary) VALUES (Chris, 25400); अपडेट क्वेरी Chris की पहली प्रविष्टि (EmployeeId के अनुसार) का वेतन बढ़ाएं: ORDER B