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

MySQL में कस्टम क्रम में रिकॉर्ड्स कैसे प्राप्त करें?

ORDER BY IF() या CASE का उपयोग

MySQL में रिकॉर्ड्स को किसी विशिष्ट कस्टम क्रम में क्रमबद्ध करने के लिए ORDER BY क्लॉज में IF() या CASE एक्सप्रेशन का उपयोग करें।

सिंटैक्स

SELECT * FROM yourTableName 
ORDER BY IF(yourColumn = 'priorityValue', 1, 0) DESC, yourColumn;

उदाहरण

1. टेबल बनाना

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR(20),
    Branch VARCHAR(20)
);
Query OK, 0 rows affected (1.96 sec)

2. डेटा डालना

mysql> INSERT INTO DemoTable(FirstName, Branch) VALUES('John', 'CS');
mysql> INSERT INTO DemoTable(FirstName, Branch) VALUES('Carol', 'ME');
mysql> INSERT INTO DemoTable(FirstName, Branch) VALUES('David', 'ME');
mysql> INSERT INTO DemoTable(FirstName, Branch) VALUES('Bob', 'CE');
mysql> INSERT INTO DemoTable(FirstName, Branch) VALUES('Robert', 'EE');
mysql> INSERT INTO DemoTable(FirstName, Branch) VALUES('Chris', 'EEE');
mysql> INSERT INTO DemoTable(FirstName, Branch) VALUES('James', 'ME');

3. सभी रिकॉर्ड्स देखना

mysql> SELECT * FROM DemoTable;
+----+-----------+--------+
| Id | FirstName | Branch |
+----+-----------+--------+
| 1  | John      | CS     |
| 2  | Carol     | ME     |
| 3  | David     | ME     |
| 4  | Bob       | CE     |
| 5  | Robert    | EE     |
| 6  | Chris     | EEE    |
| 7  | James     | ME     |
+----+-----------+--------+
7 rows in set (0.00 sec)

4. 'ME' ब्रांच को पहले क्रमबद्ध करना

mysql> SELECT * FROM DemoTable 
    ORDER BY IF(Branch = 'ME', 1, 0) DESC, Branch;
+----+-----------+--------+
| Id | FirstName | Branch |
+----+-----------+--------+
| 2  | Carol     | ME     |
| 3  | David     | ME     |
| 7  | James     | ME     |
| 4  | Bob       | CE     |
| 1  | John      | CS     |
| 5  | Robert    | EE     |
| 6  | Chris     | EEE    |
+----+-----------+--------+
7 rows in set (0.00 sec)

CASE एक्सप्रेशन का उपयोग (अधिक लचीला)

SELECT * FROM DemoTable 
ORDER BY CASE Branch 
    WHEN 'ME' THEN 1
    WHEN 'CS' THEN 2
    WHEN 'CE' THEN 3
    WHEN 'EE' THEN 4
    WHEN 'EEE' THEN 5
    ELSE 6
END;

FIELD() फंक्शन का उपयोग (सबसे सरल)

SELECT * FROM DemoTable 
ORDER BY FIELD(Branch, 'ME', 'CS', 'CE', 'EE', 'EEE');

तुलना

तरीका लचीलापन पठनीयता प्रदर्शन
IF() दो समूह (प्राथमिक/गैर-प्राथमिक) सरल अच्छा
CASE असीमित कस्टम क्रम स्पष्ट अच्छा
FIELD() सूची-आधारित क्रम बहुत सरल अच्छा

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

ऑर्डर स्टेटस: Pending > Processing > Shipped > Delivered > Cancelled

SELECT * FROM orders 
ORDER BY FIELD(status, 'Pending', 'Processing', 'Shipped', 'Delivered', 'Cancelled');

प्राथमिकता: High > Medium > Low

SELECT * FROM tasks 
ORDER BY FIELD(priority, 'High', 'Medium', 'Low'), created_at;

विशिष्ट IDs क्रम में

SELECT * FROM products 
WHERE id IN (5, 2, 8, 1)
ORDER BY FIELD(id, 5, 2, 8, 1);

प्रदर्शन नोट

कस्टम ORDER BY इंडेक्स का उपयोग नहीं कर पाता। बड़े टेबल के लिए:

  • सॉर्ट कॉलम जोड़ें (sort_order INT) और उस पर इंडेक्स डालें
  • एप्लिकेशन लेवल पर सॉर्ट करें
  1. - MySQL में IP एड्रेस रिकॉर्ड्स के अनुसार कॉलम को ऑर्डर करें

    MySQL में IP एड्रेस को सही क्रम में सॉर्ट करने के लिए, INET_ATON() फंक्शन का उपयोग करें। यह फंक्शन IP एड्रेस को संख्यात्मक मान में बदल देता है, जिससे सही संख्यात्मक क्रम में सॉर्टिंग संभव होती है। टेबल बनाएं: mysql> create table DemoTable ( -> IpAddress VARCHAR(50) -> ); Query

  1. - MySQL में रिकॉर्ड्स को ऑर्डर करके N पंक्तियाँ हटाएं (ORDER BY ... LIMIT के साथ DELETE)

    MySQL में ORDER BY और LIMIT के साथ विशिष्ट पंक्तियाँ हटाना MySQL DELETE स्टेटमेंट में ORDER BY और LIMIT क्लॉज का समर्थन करता है, जिससे आप एक विशिष्ट क्रम में केवल पहली N पंक्तियों को हटा सकते हैं। यह पुराने रिकॉर्ड्स को संग्रहीत करने, डुप्लिकेट हटाने, या नमूना डेटा हटाने के लिए उपयोगी है। टेबल बनान

  1. - Node.js से MySQL रिकॉर्ड हटाना (DELETE FROM)

    डेटाबेस टेबल से रिकॉर्ड हटाने के लिए DELETE FROM स्टेटमेंट उपयोग करें। दो तरीके: स्टैटिक डिलीशन: निश्चित फ़िल्टर मान देकर हटाएं। डायनामिक डिलीशन: इनपुट लेकर उसके आधार पर हटाएं। पूर्वापेक्षा mkdir mysql-test cd mysql-test npm init -y npm install mysql उदाहरण 1: स्टैटिक डिलीशन (address=Delhi) var