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

MySQL में IF() से केवल NULL या 0 वाले फील्ड को अपडेट करें

MySQL में UPDATE और IF() का उपयोग करके केवल उन पंक्तियों को अपडेट करें जहां कॉलम NULL या 0 है, अन्य पंक्तियों को अपरिवर्तित छोड़ दें।

सिंटैक्स

UPDATE टेबल_नाम
SET कॉलम_नाम = IF(कॉलम_नाम IS NULL OR कॉलम_नाम = 0, नया_मान, कॉलम_नाम);

उदाहरण: StudentMarks को 33 पर सेट करें यदि NULL या 0

1. टेबल बनाएं

mysql> CREATE TABLE DemoTable1592 (StudentMarks INT);

2. डेटा डालें

mysql> INSERT INTO DemoTable1592 VALUES(56), (NULL), (98), (0), (75), (NULL);

3. अपडेट से पहले

mysql> SELECT * FROM DemoTable1592;
+--------------+
| StudentMarks |
+--------------+
| 56           |
| NULL         |
| 98           |
| 0            |
| 75           |
| NULL         |
+--------------+

4. सशर्त अपडेट

mysql> UPDATE DemoTable1592
    -> SET StudentMarks = IF(StudentMarks IS NULL OR StudentMarks = 0, 33, StudentMarks);
Query OK, 3 rows affected. Rows matched: 6 Changed: 3

5. अपडेट के बाद

mysql> SELECT * FROM DemoTable1592;
+--------------+
| StudentMarks |
+--------------+
| 56           |
| 33           |
| 98           |
| 33           |
| 75           |
| 33           |
+--------------+

व्याख्या

  • Rows matched: 6 - WHERE के बिना सभी 6 पंक्तियां जांची गईं
  • Changed: 3 - केवल 3 पंक्तियां वास्तव में बदलीं (2 NULL + 1 शून्य)
  • 56, 98, 75 अपरिवर्तित रहे

WHERE क्लॉज के साथ (अधिक कुशल)

UPDATE DemoTable1592
SET StudentMarks = 33
WHERE StudentMarks IS NULL OR StudentMarks = 0;

लाभ: केवल योग्य पंक्तियां छूता है, Rows matched = Changed = 3।

COALESCE विकल्प

UPDATE DemoTable1592
SET StudentMarks = COALESCE(NULLIF(StudentMarks, 0), 33)
WHERE StudentMarks IS NULL OR StudentMarks = 0;

सर्वोत्तम अभ्यास

  • बड़े टेबल पर WHERE क्लॉज का उपयोग करें (प्रदर्शन)
  • सशर्त अपडेट के लिए CASE WHEN भी उपयोग कर सकते हैं
  • ट्रिगर में इसी तर्क का उपयोग कर सकते हैं

चेतावनी

IF() में StudentMarks = 0 जांच NULL = 0 को UNKNOWN देती है, इसलिए IS NULL अलग से जांचना आवश्यक है।

  1. - MySQL में NULL या नॉन-NULL मानों वाले टेबल के सभी फील्ड अपडेट करें

    आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> ); Query OK, 0 rows affected (0.58 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(10,NULL); Query OK, 1 row affected (0.32 sec) mysql&

  1. - MySQL में केवल एक फील्ड को NULL के स्थान पर अपडेट करने का क्वेरी

    इसके लिए आप COALESCE() का उपयोग कर सकते हैं। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1805 ( Name1 varchar(20), Name2 varchar(20) ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable1805 values(Chr

  1. - MySQL: GROUP BY के साथ फील्ड कैसे अपडेट करें?

    समस्या MySQL सीधे UPDATE में GROUP BY का समर्थन नहीं करता। समाधान: ORDER BY LIMIT का उपयोग करें। उदाहरण टेबल बनाएं: ); डेटा डालें: INSERT INTO DemoTable2018 (EmployeeName, EmployeeSalary) VALUES (Chris, 25400); अपडेट क्वेरी Chris की पहली प्रविष्टि (EmployeeId के अनुसार) का वेतन बढ़ाएं: ORDER B