MySQL में किसी कॉलम की सभी प्रविष्टियों को अपडेट करते समय एक विशिष्ट पंक्ति (या शर्त) को छोड़ने के लिए IF() फ़ंक्शन का उपयोग करें।
सिंटैक्स
UPDATE table_name SET column_name = IF(exclude_condition, keep_value, new_value) WHERE condition;
व्यावहारिक उदाहरण
1. टेबल बनाएं और डेटा डालें
mysql> CREATE TABLE DemoTable736 (
CustomerId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
CustomerName VARCHAR(100),
isMarried BOOLEAN
);
Query OK, 0 rows affected (0.53 sec)
mysql> INSERT INTO DemoTable736 (CustomerName, isMarried) VALUES
('Chris', 0), ('Robert', 0), ('David', 0), ('Mike', 0), ('Carol', 1), ('Bob', 0);
Query OK, 6 rows affected (0.15 sec)
2. अपडेट से पहले
mysql> SELECT * FROM DemoTable736; +------------+--------------+-----------+ | CustomerId | CustomerName | isMarried | +------------+--------------+-----------+ | 1 | Chris | 0 | | 2 | Robert | 0 | | 3 | David | 0 | | 4 | Mike | 0 | | 5 | Carol | 1 | | 6 | Bob | 0 | +------------+--------------+-----------+ 6 rows in set (0.00 sec)
3. CustomerId=5 को छोड़कर सभी को 1 पर अपडेट करें
mysql> UPDATE DemoTable736 SET isMarried = IF(CustomerId = 5, 1, 1); Query OK, 5 rows affected (0.13 sec) Rows matched: 6 Changed: 5 Warnings: 0
4. अपडेट के बाद
mysql> SELECT * FROM DemoTable736; +------------+--------------+-----------+ | CustomerId | CustomerName | isMarried | +------------+--------------+-----------+ | 1 | Chris | 1 | | 2 | Robert | 1 | | 3 | David | 1 | | 4 | Mike | 1 | | 5 | Carol | 1 | -- अपरिवर्तित (पहले से 1) | 6 | Bob | 1 | +------------+--------------+-----------+ 6 rows in set (0.00 sec)
व्याख्या
IF(CustomerId = 5, 1, 1)- यदि CustomerId 5 है तो 1, अन्यथा 1- इस उदाहरण में दोनों शाखाएं 1 देती हैं, इसलिए Carol (Id=5) अपरिवर्तित रहती है
- Rows matched: 6, Changed: 5 - 6 पंक्तियाँ मिलीं, 5 वास्तव में बदलीं
अधिक उपयोगी पैटर्न: मान को यथावत रखें
-- Carol के लिए वर्तमान मान रखें, बाकी को 1 पर सेट करें UPDATE DemoTable736 SET isMarried = IF(CustomerId = 5, isMarried, 1);
CASE WHEN विकल्प (अधिक पठनीय जटिल शर्तों के लिए)
UPDATE DemoTable736
SET isMarried = CASE
WHEN CustomerId = 5 THEN isMarried -- Carol को छोड़ें
WHEN CustomerName = 'Bob' THEN 0 -- Bob को 0 रखें
ELSE 1 -- बाकी को 1
END;
WHERE क्लॉज के साथ संयोजन
-- केवल isMarried=0 वालों को अपडेट करें, Carol को छोड़कर UPDATE DemoTable736 SET isMarried = 1 WHERE isMarried = 0 AND CustomerId != 5;
सर्वोत्तम अभ्यास
- सरल शर्तों के लिए
IF(), जटिल के लिएCASE WHEN - बड़े अपडेट से पहले
SELECTके साथ सत्यापित करें WHEREक्लॉज का उपयोग करके प्रभावित पंक्तियों को सीमित करें- उत्पादन में ट्रांजैक्शन (
START TRANSACTION) का उपयोग करें