MySQL UPDATE स्टेटमेंट में IF() फंक्शन और CASE से सशर्त अपडेट करना
IF() फंक्शन सिंटैक्स:
UPDATE yourTableName
SET column1 = IF(condition, value_if_true, value_if_false),
column2 = IF(condition, value_if_true, value_if_false);
व्यावहारिक उदाहरण
1. टेबल बनाएं:
mysql> CREATE TABLE UpdateWithIfCondition (
-> BookId INT,
-> BookName VARCHAR(200)
-> );
Query OK, 0 rows affected (0.60 sec)
2. डेटा डालें:
mysql> INSERT INTO UpdateWithIfCondition VALUES(1000,'C in Depth'); mysql> INSERT INTO UpdateWithIfCondition VALUES(1001,'Introduction to Java');
3. मूल डेटा:
+--------+----------------------+ | BookId | BookName | +--------+----------------------+ | 1000 | C in Depth | | 1001 | Introduction to Java | +--------+----------------------+ 2 rows in set (0.00 sec)
4. IF() से सशर्त अपडेट (दोनों कॉलम एक साथ):
mysql> UPDATE UpdateWithIfCondition
-> SET BookName = IF(BookName = 'C in Depth', 'Introduction to C', BookName),
-> BookId = IF(BookId = 1001, 2000, BookId);
Query OK, 2 rows affected (0.43 sec)
Rows matched: 2 Changed: 2 Warnings: 0
5. अपडेट के बाद:
+--------+----------------------+ | BookId | BookName | +--------+----------------------+ | 1000 | Introduction to C | | 2000 | Introduction to Java | +--------+----------------------+ 2 rows in set (0.00 sec)
CASE स्टेटमेंट विकल्प (अधिक शक्तिशाली):
UPDATE table_name
SET column = CASE
WHEN condition1 THEN value1
WHEN condition2 THEN value2
ELSE column -- कोई बदलाव नहीं
END;
उदाहरण:
UPDATE products
SET price = CASE
WHEN category = 'electronics' THEN price * 1.1
WHEN category = 'clothing' THEN price * 1.05
ELSE price
END;
IF() vs CASE:
| विशेषता | IF() | CASE |
|---|---|---|
| शर्तें | एक | एकाधिक |
| पठनीयता | सरल केस के लिए अच्छी | जटिल लॉजिक के लिए बेहतर |
| मानक | MySQL-विशिष्ट | ANSI SQL |
| नेस्टिंग | मुश्किल | आसान |
WHERE क्लॉज के साथ संयोजन:
UPDATE table_name SET col = IF(condition, new_val, col) WHERE some_other_condition;
नोट: WHERE क्लॉज पंक्तियों को फ़िल्टर करता है, IF/CASE मान तय करता है।