MySQL में ORDER BY FIELD() के साथ IN क्लॉज के क्रम को बनाए रखना
डिफ़ॉल्ट रूप से IN() क्लॉज परिणामों को तालिका के प्राकृतिक क्रम में लौटाता है। ORDER BY FIELD() का उपयोग करके परिणामों को IN सूची के क्रम में क्रमबद्ध किया जा सकता है।
व्यावहारिक उदाहरण
तालिका बनाना
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName VARCHAR(100)
);
रिकॉर्ड डालना
mysql> INSERT INTO DemoTable(FirstName) VALUES('Chris');
mysql> INSERT INTO DemoTable(FirstName) VALUES('Robert');
mysql> INSERT INTO DemoTable(FirstName) VALUES('Mike');
mysql> INSERT INTO DemoTable(FirstName) VALUES('Sam');
mysql> INSERT INTO DemoTable(FirstName) VALUES('Carol');
mysql> INSERT INTO DemoTable(FirstName) VALUES('David');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+----+-----------+ | Id | FirstName | +----+-----------+ | 1 | Chris | | 2 | Robert | | 3 | Mike | | 4 | Sam | | 5 | Carol | | 6 | David | +----+-----------+
IN सूची के क्रम (4,5,6) में परिणाम प्राप्त करने के लिए क्वेरी
mysql> SELECT FirstName FROM DemoTable WHERE Id IN(4,5,6) ORDER BY FIELD(Id, 4, 5, 6);
आउटपुट:
+-----------+ | FirstName | +-----------+ | Sam | | Carol | | David | +-----------+
FIELD() फ़ंक्शन व्याख्या
FIELD(str, str1, str2, ...)- str की सूची में स्थिति लौटाता है (1-आधारित)- नहीं मिलने पर 0 लौटाता है
ORDER BY FIELD(Id, 4, 5, 6)- Id=4 को पहले, फिर 5, फिर 6 क्रमबद्ध करता है
वैकल्पिक तरीके