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

MySQL में IN क्लॉज में निर्दिष्ट क्रम के अनुसार ORDER BY करने के लिए FIND_IN_SET() उपयोग करें

IN क्लॉज में मानों के क्रम के अनुसार परिणाम सॉर्ट करना

MySQL में IN (val1, val2, ...) परिणामों के क्रम की गारंटी नहीं देता। निर्दिष्ट क्रम में सॉर्ट करने के लिए FIND_IN_SET() फ़ंक्शन का उपयोग करें।

सिंटैक्स

SELECT * FROM yourTable
WHERE yourColumn IN (val1, val2, val3)
ORDER BY FIND_IN_SET(yourColumn, 'val1,val2,val3');

उदाहरण

CREATE TABLE recordSetOrderDemo (
    EmployeeId INT,
    EmployeeName VARCHAR(30)
);

INSERT INTO recordSetOrderDemo VALUES
(20, 'John'), (10, 'Larry'), (100, 'Mike'), (50, 'Sam'), (10, 'David');

क्वेरी: क्रम 100, 10, 20, 50

SELECT * FROM recordSetOrderDemo
WHERE EmployeeId IN (100, 10, 20, 50)
ORDER BY FIND_IN_SET(EmployeeId, '100,10,20,50');

आउटपुट

+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
| 100        | Mike         |
| 10         | Larry        |
| 10         | David        |
| 20         | John         |
| 50         | Sam          |
+------------+--------------+

कैसे काम करता है

  • FIND_IN_SET(str, strlist) कॉमा-अलग स्ट्रिंग लिस्ट में str की 1-आधारित स्थिति लौटाता है।
  • नहीं मिलने पर 0 लौटाता है (पहले आते हैं)।
  • दूसरा आर्गुमेंट **कॉन्स्टेंट स्ट्रिंग** होना चाहिए (कॉलम नहीं)।

सीमाएं और विकल्प

  • FIND_IN_SET स्ट्रिंग तुलना करता है; संख्याओं के लिए काम करता है क्योंकि वे स्ट्रिंग में बदल जाते हैं।
  • <बड़े लिस्ट के लिए प्रदर्शन खराब हो सकता है।
  • MySQL 8.0+ विकल्प: ORDER BY FIELD(EmployeeId, 100, 10, 20, 50) — FIELD() फ़ंक्शन यही काम करता है और अधिक पठनीय है।

FIELD() उदाहरण

ORDER BY FIELD(EmployeeId, 100, 10, 20, 50)
  1. - MySQL में ORDER BY FIELD() का उपयोग करके IN क्लॉज के क्रम में परिणाम प्राप्त करना

    MySQL में ORDER BY FIELD() के साथ IN क्लॉज के क्रम को बनाए रखना डिफ़ॉल्ट रूप से IN() क्लॉज परिणामों को तालिका के प्राकृतिक क्रम में लौटाता है। ORDER BY FIELD() का उपयोग करके परिणामों को IN सूची के क्रम में क्रमबद्ध किया जा सकता है। व्यावहारिक उदाहरण तालिका बनाना CREATE TABLE DemoTable ( Id IN

  1. - MySQL में SUBSTRING_INDEX और CAST के साथ संख्या सेट के पहले नंबर द्वारा क्रमबद्ध करना

    MySQL में SUBSTRING_INDEX() के साथ अल्पविराम से अलग संख्याओं के पहले नंबर द्वारा क्रमबद्ध करना जब कॉलम में 245,654,76,89,98 जैसे अल्पविराम से अलग संख्याएं हों, तो SUBSTRING_INDEX() से पहला नंबर निकालकर संख्यात्मक क्रमबद्ध किया जा सकता है। व्यावहारिक उदाहरण तालिका बनाना CREATE TABLE DemoTable (

  1. - MySQL में तिथि रिकॉर्ड क्रमबद्ध करें और दूसरी क्रमबद्ध पंक्ति प्राप्त करें

    ORDER BY और LIMIT OFFSET के साथ दूसरी क्रमबद्ध पंक्ति प्राप्त करना क्रमबद्ध करने के लिए ORDER BY और केवल दूसरी क्रमबद्ध पंक्ति प्राप्त करने के लिए MySQL LIMIT का उपयोग करें और ऑफसेट भी सेट करें। पहले टेबल बनाएं: create table DemoTable1417 ( CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Custom