परिचय
MySQL में CASE स्टेटमेंट का उपयोग करके शर्तों के आधार पर अलग-अलग मान असाइन किए जा सकते हैं। यह लेख दिखाता है कि कैसे एक ही UPDATE क्वेरी में विभिन्न शर्तों के लिए अलग-अलग ID मान सेट करें।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable1545 (
-> Id INT,
-> FirstName VARCHAR(20)
-> );
Query OK, 0 rows affected (1.65 sec)
mysql> INSERT INTO DemoTable1545 VALUES(1, 'John');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable1545 VALUES(2, 'Chris');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable1545 VALUES(3, 'Bob');
Query OK, 1 row affected (0.15 sec)
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable1545;
आउटपुट:
+------+-----------+
| Id | FirstName |
+------+-----------+
| 1 | John |
| 2 | Chris |
| 3 | Bob |
+------+-----------+
3 rows in set (0.00 sec)
CASE स्टेटमेंट के साथ UPDATE क्वेरी
mysql> UPDATE DemoTable1545
-> SET Id = CASE
-> WHEN FirstName LIKE '%John%' THEN 101
-> WHEN FirstName LIKE '%Chris%' THEN 201
-> WHEN FirstName LIKE '%Bob%' THEN 501
-> ELSE Id
-> END;
Query OK, 3 rows affected (0.18 sec)
Rows matched: 3 Changed: 3 Warnings: 0
अपडेट के बाद रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable1545;
आउटपुट:
+------+-----------+
| Id | FirstName |
+------+-----------+
| 101 | John |
| 201 | Chris |
| 501 | Bob |
+------+-----------+
3 rows in set (0.00 sec)
व्याख्या
CASEस्टेटमेंट प्रत्येक पंक्ति का मूल्यांकन करता हैWHENक्लॉज शर्तों को क्रम से जांचता हैTHENसंबंधित मान निर्दिष्ट करता हैELSE Idडिफ़ॉल्ट रूप से मौजूदा मान रखता है यदि कोई शर्त मेल नहीं खाती
लाभ
- एक ही क्वेरी में एकाधिक शर्तें
- बेहतर प्रदर्शन (एकाधिक UPDATE क्वेरीज की आवश्यकता नहीं)
- पठनीय और रखरखाव योग्य कोड
यह तकनीक थोक अपडेट ऑपरेशन्स के लिए आदर्श है जहां अलग-अलग मानदंडों के लिए अलग-अलग मान सेट करने हों।