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

MySQL में CASE स्टेटमेंट से प्राप्त मान के आधार पर कॉलम कैसे अपडेट करें?

MySQL में CASE स्टेटमेंट का उपयोग UPDATE के अंदर करके, वर्तमान मान के आधार पर नया मान सेट कर सकते हैं। यह मानों को स्वैप करने, मैप करने, या कंडीशनल ट्रांसफॉर्मेशन के लिए उपयोगी है।

उदाहरण: StudentMarks मान स्वैप करना (45↔98)

डेमो टेबल बनाएं:

mysql> CREATE TABLE DemoTable1925 (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(20),
    StudentMarks INT
);

डेटा इन्सर्ट करें:

mysql> INSERT INTO DemoTable1925 (StudentName, StudentMarks) VALUES
('Chris', 98), ('David', 45);

अपडेट से पहले:

+-----------+-------------+--------------+
| StudentId | StudentName | StudentMarks |
+-----------+-------------+--------------+
| 1         | Chris       | 98           |
| 2         | David       | 45           |
+-----------+-------------+--------------+

CASE के साथ UPDATE (मान स्वैप करें):

mysql> UPDATE DemoTable1925
SET StudentMarks = CASE StudentMarks
    WHEN 45 THEN 98
    WHEN 98 THEN 0
END
WHERE StudentMarks IN (45, 98);

अपडेट के बाद:

+-----------+-------------+--------------+
| StudentId | StudentName | StudentMarks |
+-----------+-------------+--------------+
| 1         | Chris       | 0            |
| 2         | David       | 98           |
+-----------+-------------+--------------+

सरल CASE सिंटैक्स

UPDATE table_name
SET column = CASE column
    WHEN value1 THEN new_value1
    WHEN value2 THEN new_value2
    ...
    ELSE column  -- या कोई डिफ़ॉल्ट
END
WHERE condition;

खोजा गया CASE (शर्तों के लिए)

UPDATE table_name
SET column = CASE
    WHEN column > 100 THEN 'High'
    WHEN column > 50 THEN 'Medium'
    ELSE 'Low'
END;

उन्नत उदाहरण: सैलरी ब्रैकेट अपडेट

UPDATE employees
SET bonus = CASE
    WHEN salary >= 100000 THEN salary * 0.20
    WHEN salary >= 50000 THEN salary * 0.15
    WHEN salary >= 30000 THEN salary * 0.10
    ELSE 0
END,
bonus_tier = CASE
    WHEN salary >= 100000 THEN 'Platinum'
    WHEN salary >= 50000 THEN 'Gold'
    WHEN salary >= 30000 THEN 'Silver'
    ELSE 'Bronze'
END;

सावधानियां

  • WHERE क्लॉज़: केवल प्रभावित पंक्तियों को अपडेट करने के लिए उपयोग करें (प्रदर्शन और सुरक्षा)
  • ELSE क्लॉज़: सरल CASE में ELSE न होने पर NULL सेट हो सकता है
  • डेटा प्रकार: THEN अभिव्यक्तियों का डेटा प्रकार कॉलम के साथ संगत होना चाहिए
  • ट्रिगर: यह BEFORE UPDATE ट्रिगर को फायर करेगा

CASE के साथ UPDATE डेटा ट्रांसफॉर्मेशन, माइग्रेशन, और बिजनेस लॉजिक लागू करने के लिए शक्तिशाली टूल है।

  1. MySQL में विशिष्ट कॉलम नाम वाली टेबल कैसे खोजें MySQL में विशिष्ट कॉलम नाम वाली टेबल कैसे खोजें

    information_schema.columns टेबल को क्वेरी करके डेटाबेस में विशिष्ट कॉलम नाम वाली सभी टेबल खोजें। सिंटैक्स SELECT DISTINCT table_name FROM information_schema.columns WHERE column_name LIKE %yourSearchValue% AND table_schema = DATABASE(); उदाहरण: Client वाली कॉलम खोजना SELECT DISTINCT table_name FR

  1. - MySQL में विशिष्ट कॉलम मान की अदला-बदली करना

    UPDATE और WHERE से विशिष्ट पंक्ति का मान बदलना UPDATE में WHERE क्लॉज का उपयोग करके केवल विशिष्ट शर्त पूरी करने वाली पंक्ति का कॉलम मान बदला जा सकता है। तालिका और डेटा (101, Chris), (102, Bob), (103, David), (104, Mike); आईडी 103 का नाम Carol में बदलना WHERE Id = 103 AND FirstName <> Carol; Que

  1. - MySQL में LIKE क्वेरी से % चिह्न वाले कॉलम मान खोजना

    ESCAPE करके % को शाब्दिक मिलान करना LIKE में % वाइल्डकार्ड है। इसे शाब्दिक % वर्ण के रूप में खोजने के लिए बैकस्लैश \ से एस्केप करें: \\%। तालिका और डेटा (%JohnSmith), (DavidMiller), (CarolTaylor%), (%DavidMiller); क्वेरी: % से शुरू होने वाले नाम SELECT * FROM DemoTable1497 WHERE Name LIKE \\%;