Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में IF() फ़ंक्शन का उपयोग करके एक मान को छोड़कर सभी प्रविष्टियाँ अपडेट करना

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) का उपयोग करें
  1. - MySQL में एकल क्वेरी से टेबल के सभी कॉलम को विशिष्ट मान पर सेट करें

    MySQL में UPDATE स्टेटमेंट का उपयोग करके एक ही क्वेरी में किसी टेबल के एक या अधिक कॉलम को विशिष्ट मानों पर सेट किया जा सकता है। यह तब उपयोगी होता है जब किसी विशिष्ट पंक्ति (या पंक्तियों) के सभी फ़ील्ड को एक साथ अपडेट करना हो। सिंटैक्स UPDATE table_name SET column1 = value1, column2 = value2, colum

  1. - MySQL में केवल एक कॉलम मान को कैसे अपडेट करें?

    MySQL में UPDATE स्टेटमेंट का उपयोग करके किसी विशिष्ट शर्त के आधार पर केवल एक कॉलम का मान बदला जा सकता है, जबकि अन्य कॉलम अपरिवर्तित रहते हैं। सिंटैक्स UPDATE table_name SET column_name = new_value WHERE condition; उदाहरण छात्र तालिका बनाएं: mysql> CREATE TABLE DemoTable ( -> StudentId

  1. - MySQL में ORDER BY से विशिष्ट मान को अंत में कैसे सॉर्ट करें?

    ट्रिक: बूलियन अभिव्यक्ति सॉर्टिंग (full_name=Not Known) TRUE=1, FALSE=0 देता है। ASC क्रम में 0 पहले, 1 बाद में आता है। उदाहरण insert into demo57(full_name) values(John Smith), (David Miller), (Not Known), (Chris Brown); क्वेरी select * from demo57 order by (full_name=Not Known), full_name desc