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 अलग से जांचना आवश्यक है।