इसके लिए CASE स्टेटमेंट का उपयोग करें। यह अस्थायी टेबल के बिना भी काम करता है।
टेबल बनाएं
mysql> create table DemoTable (
-> UserName varchar(100),
-> UserStatus varchar(100)
-> );
Query OK, 0 rows affected (0.74 sec)
रिकॉर्ड्स डालें
mysql> insert into DemoTable values('John','Active');
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable values('Chris','Inactive');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('Bob','Inactive');
Query OK, 1 row affected (0.32 sec)
mysql> insert into DemoTable values('Robert','Active');
Query OK, 1 row affected (0.15 sec)
सभी रिकॉर्ड्स देखें
mysql> select * from DemoTable;
+----------+------------+ | UserName | UserStatus | +----------+------------+ | John | Active | | Chris | Inactive | | Bob | Inactive | | Robert | Active | +----------+------------+ 4 rows in set (0.00 sec)
CASE का उपयोग करके कॉलम डेटा अपडेट करने का क्वेरी
mysql> UPDATE DemoTable
-> SET UserStatus = CASE UserStatus
-> WHEN 'Inactive' THEN 'Active'
-> ELSE 'Inactive'
-> END;
Query OK, 4 rows affected (0.28 sec)
Rows matched: 4 Changed: 4 Warnings: 0
फिर से जांचें
mysql> select * from DemoTable;
+----------+------------+ | UserName | UserStatus | +----------+------------+ | John | Inactive | | Chris | Active | | Bob | Active | | Robert | Inactive | +----------+------------+ 4 rows in set (0.00 sec)
व्याख्या:
CASE UserStatus WHEN 'Inactive' THEN 'Active' ELSE 'Inactive' END- प्रत्येक पंक्ति के लिए मूल्यांकन- 'Inactive' → 'Active', अन्य सभी → 'Inactive'
- एक ही क्वेरी में सभी पंक्तियां अपडेट होती हैं
- अस्थायी टेबल या एकाधिक UPDATE स्टेटमेंट्स की आवश्यकता नहीं
सीखा गया CASE सिंटैक्स: CASE col WHEN val1 THEN res1 WHEN val2 THEN res2 ELSE default END