MySQL में एक ही UPDATE स्टेटमेंट में REPLACE() फ़ंक्शन का उपयोग करके एकाधिक कॉलम के मान एक साथ बदलें।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(100),
-> StudentCountryName VARCHAR(100)
-> );
Query OK, 0 rows affected (0.67 sec)
mysql> INSERT INTO DemoTable(StudentName, StudentCountryName) VALUES('John', 'US');
मौजूदा डेटा देखना
mysql> SELECT * FROM DemoTable;
आउटपुट
+-----------+-------------+--------------------+ | StudentId | StudentName | StudentCountryName | +-----------+-------------+--------------------+ | 1 | John | US | +-----------+-------------+--------------------+ 1 row in set (0.00 sec)
दोनों कॉलम एक साथ अपडेट करना
mysql> UPDATE DemoTable
-> SET StudentName = REPLACE(StudentName, 'John', 'Chris'),
-> StudentCountryName = REPLACE(StudentCountryName, 'US', 'UK');
Query OK, 1 row affected (0.69 sec)
Rows matched: 1 Changed: 1 Warnings: 0
अपडेट के बाद डेटा देखना
mysql> SELECT * FROM DemoTable;
आउटपुट
+-----------+-------------+--------------------+ | StudentId | StudentName | StudentCountryName | +-----------+-------------+--------------------+ | 1 | Chris | UK | +-----------+-------------+--------------------+ 1 row in set (0.00 sec)
मुख्य बिंदु:
- कॉमा से अलग करके एक UPDATE में कई कॉलम सेट करें
REPLACE(col, old, new)कॉलम मान में old के सभी उदाहरणों को new से बदलता है- यदि old नहीं मिलता, तो मान अपरिवर्तित रहता है
- प्रत्येक कॉलम के लिए अलग UPDATE चलाने से बेहतर (एकल टेबल लॉक, एकल पास)
सामान्य पैटर्न (REPLACE के बिना सीधा मान):
UPDATE DemoTable
SET StudentName = 'Chris',
StudentCountryName = 'UK'
WHERE StudentId = 1;
सशर्त अपडेट:
UPDATE DemoTable
SET Status = CASE WHEN Score >= 60 THEN 'Pass' ELSE 'Fail' END,
UpdatedAt = NOW()
WHERE ExamDate < CURDATE();