MySQL में IF() फ़ंक्शन का उपयोग करके शर्ती अपडेट किए जा सकते हैं। यह एक ही क्वेरी में अलग-अलग शर्तों के आधार पर अलग-अलग मान सेट करने की अनुमति देता है।
सिंटैक्स
UPDATE table_name SET column_name = IF(condition, value_if_true, value_if_false) WHERE condition;
व्यावहारिक उदाहरण
1. टेबल बनाएं और डेटा डालें
mysql> CREATE TABLE DemoTable716 (
Id VARCHAR(100),
Value1 INT,
Value2 INT,
Value3 INT
);
Query OK, 0 rows affected (0.65 sec)
mysql> INSERT INTO DemoTable716 VALUES
('100', 45, 86, 79),
('101', 67, 67, 99),
('102', 77, 57, 98),
('103', 45, 67, 92);
Query OK, 4 rows affected (0.15 sec)
2. अपडेट से पहले डेटा
mysql> SELECT * FROM DemoTable716; +------+--------+--------+--------+ | Id | Value1 | Value2 | Value3 | +------+--------+--------+--------+ | 100 | 45 | 86 | 79 | | 101 | 67 | 67 | 99 | | 102 | 77 | 57 | 98 | | 103 | 45 | 67 | 92 | +------+--------+--------+--------+ 4 rows in set (0.00 sec)
3. शर्ती अपडेट 실행 करें
mysql> UPDATE DemoTable716 SET Value3 = IF(Value1 = 67 OR Value2 = 67, 67, NULL) WHERE Id = '101'; Query OK, 1 row affected (0.14 sec) Rows matched: 1 Changed: 1 Warnings: 0
4. अपडेट के बाद डेटा
mysql> SELECT * FROM DemoTable716; +------+--------+--------+--------+ | Id | Value1 | Value2 | Value3 | +------+--------+--------+--------+ | 100 | 45 | 86 | 79 | | 101 | 67 | 67 | 67 | -- अपडेट हुआ (शर्त पूरी हुई) | 102 | 77 | 57 | 98 | | 103 | 45 | 67 | 92 | +------+--------+--------+--------+ 4 rows in set (0.00 sec)
IF() vs CASE WHEN
| IF() | CASE WHEN |
|---|---|
| सरल शर्तों के लिए | जटिल/एकाधिक शर्तों के लिए |
IF(cond, true_val, false_val) | CASE WHEN cond1 THEN v1 WHEN cond2 THEN v2 ELSE v3 END |
| नेस्ट करना मुश्किल | आसानी से नेस्टेड शर्तें |
CASE WHEN उदाहरण
UPDATE DemoTable716
SET Value3 = CASE
WHEN Value1 = 67 OR Value2 = 67 THEN 67
WHEN Value1 > 50 THEN Value1
ELSE NULL
END
WHERE Id = '101';
नेस्टेड IF उदाहरण
UPDATE table SET result = IF(score >= 90, 'A',
IF(score >= 80, 'B',
IF(score >= 70, 'C', 'F')));