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

MySQL में ORDER BY FIELD() से विशिष्ट मान पहले क्रमबद्ध करना

FIELD() फंक्शन के साथ कस्टम क्रम

FIELD(str, str1, str2, ...) फंक्शन स्ट्रिंग की सूची में स्थिति (1-आधारित) लौटाता है। ORDER BY FIELD(...) का उपयोग करके परिणाम को कस्टम क्रम में व्यवस्थित करें।

उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना

mysql> CREATE TABLE DemoTable849(Color VARCHAR(100));
Query OK, 0 rows affected (0.56 sec)

रिकॉर्ड्स इन्सर्ट करना

mysql> INSERT INTO DemoTable849 VALUES('RED'),('ORANGE'),('BLUE'),('GREEN');
Query OK, 4 rows affected (...)

सभी रिकॉर्ड्स देखना (इन्सर्ट क्रम)

mysql> SELECT * FROM DemoTable849;
+--------+
| Color  |
+--------+
| RED    |
| ORANGE |
| BLUE   |
| GREEN  |
+--------+
4 rows in set (0.00 sec)

कस्टम क्रम में क्रमबद्ध करने की क्वेरी

mysql> SELECT * FROM DemoTable849 
    ORDER BY FIELD(Color, 'RED', 'GREEN', 'BLUE', 'ORANGE');

परिणाम

+--------+
| Color  |
+--------+
| RED    |
| GREEN  |
| BLUE   |
| ORANGE |
+--------+
4 rows in set (0.00 sec)

FIELD() कैसे काम करता है

FIELD('RED', 'RED', 'GREEN', 'BLUE', 'ORANGE')    -- 1 लौटाता है
FIELD('GREEN', 'RED', 'GREEN', 'BLUE', 'ORANGE')  -- 2 लौटाता है
FIELD('BLUE', 'RED', 'GREEN', 'BLUE', 'ORANGE')   -- 3 लौटाता है
FIELD('ORANGE', 'RED', 'GREEN', 'BLUE', 'ORANGE') -- 4 लौटाता है
FIELD('PINK', 'RED', 'GREEN', 'BLUE', 'ORANGE')   -- 0 लौटाता है (नहीं मिला)

ORDER BY FIELD(...) संख्यात्मक क्रम (1,2,3,4,0) में क्रमबद्ध करता है, इसलिए सूचीबद्ध मान पहले आते हैं, फिर बाकी (0)।

लिस्ट में नहीं मिलने वाले मान

  • डिफ़ॉल्ट: अंत में आते हैं (FIELD = 0)
  • पहले लाने के लिए: ORDER BY FIELD(Color, 'RED','GREEN') DESC, Color - लेकिन 0 अंत में ही रहता है
  • बेहतर: ORDER BY CASE WHEN Color IN ('RED','GREEN') THEN 0 ELSE 1 END, FIELD(Color, 'RED','GREEN'), Color

व्यावहारिक उदाहरण

ऑर्डर स्टेटस क्रम

ORDER BY FIELD(Status, 'PENDING', 'PROCESSING', 'SHIPPED', 'DELIVERED', 'CANCELLED')

प्राथमिकता स्तर

ORDER BY FIELD(Priority, 'CRITICAL', 'HIGH', 'MEDIUM', 'LOW')

दिन क्रम

ORDER BY FIELD(DayName, 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY')

FIELD() vs CASE WHEN

पहलूFIELD()CASE WHEN
सिंटैक्ससरल सूची के लिए संक्षिप्तजटिल शर्तों के लिए
पैटर्न मिलाननहीं (सटीक मिलान)हाँ (LIKE, रेंज, आदि)
NULL हैंडलिंगNULL = 0स्पष्ट नियंत्रण
प्रदर्शनथोड़ा तेजतुलनीय

डायनामिक क्रम (एप्लिकेशन से)

-- एप्लिकेशन कोड में क्रम सूची बनाएं
$order = ['RED', 'GREEN', 'BLUE'];
$query = "ORDER BY FIELD(Color, '" . implode("','", $order) . "')";
  1. - MySQL में विशिष्ट कॉलम मान की अदला-बदली करना

    UPDATE और WHERE से विशिष्ट पंक्ति का मान बदलना UPDATE में WHERE क्लॉज का उपयोग करके केवल विशिष्ट शर्त पूरी करने वाली पंक्ति का कॉलम मान बदला जा सकता है। तालिका और डेटा (101, Chris), (102, Bob), (103, David), (104, Mike); आईडी 103 का नाम Carol में बदलना WHERE Id = 103 AND FirstName <> Carol; Que

  1. - MySQL में विशिष्ट कॉलम मान (नाम) प्राप्त करें

    विशिष्ट कॉलम मान प्राप्त करने के लिए LIKE क्लॉज का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1809 ( Name varchar(20) ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable1809 values(John); Qu

  1. - MySQL में पहले तीन पंक्तियों के लिए कस्टम मान सेट करना

    ORDER BY और LIMIT से पहली N पंक्तियां अपडेट करें पहली तीन पंक्तियों के लिए एक विशिष्ट मान सेट करने के लिए ORDER BY और LIMIT 3 का उपयोग करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1968 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20) ); Query OK, 0 rows affected (0.0