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

MySQL में एक कॉलम का डेटा दूसरे कॉलम में कैसे अपडेट करें (यदि दूसरा कॉलम NULL नहीं है)?

शर्त के साथ UPDATE स्टेटमेंट का उपयोग करना

WHERE क्लॉज में IS NOT NULL चेक का उपयोग करके केवल उन पंक्तियों को अपडेट करें जहां स्रोत कॉलम NULL नहीं है।

सिंटैक्स

UPDATE yourTableName 
SET targetColumn = sourceColumn 
WHERE sourceColumn IS NOT NULL;

उदाहरण

1. टेबल बनाना

mysql> CREATE TABLE DemoTable (
    UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserFirstName VARCHAR(20),
    ListOfName VARCHAR(20)
);
Query OK, 0 rows affected (0.59 sec)

2. डेटा डालना (कुछ NULL मानों के साथ)

mysql> INSERT INTO DemoTable(UserFirstName, ListOfName) VALUES('John', 'Larry');
mysql> INSERT INTO DemoTable(UserFirstName, ListOfName) VALUES('Carol', NULL);
mysql> INSERT INTO DemoTable(UserFirstName, ListOfName) VALUES('David', 'Sam');
mysql> INSERT INTO DemoTable(UserFirstName, ListOfName) VALUES('Bob', NULL);
mysql> INSERT INTO DemoTable(UserFirstName, ListOfName) VALUES(NULL, NULL);

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

mysql> SELECT * FROM DemoTable;
+--------+---------------+------------+
| UserId | UserFirstName | ListOfName |
+--------+---------------+------------+
| 1      | John          | Larry      |
| 2      | Carol         | NULL       |
| 3      | David         | Sam        |
| 4      | Bob           | NULL       |
| 5      | NULL          | NULL       |
+--------+---------------+------------+
5 rows in set (0.00 sec)

4. अपडेट क्वेरी चलाना

mysql> UPDATE DemoTable 
    SET UserFirstName = ListOfName 
    WHERE ListOfName IS NOT NULL;
Query OK, 2 rows affected (0.26 sec)
Rows matched: 2  Changed: 2  Warnings: 0

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

mysql> SELECT * FROM DemoTable;
+--------+---------------+------------+
| UserId | UserFirstName | ListOfName |
+--------+---------------+------------+
| 1      | Larry         | Larry      |
| 2      | Carol         | NULL       |
| 3      | Sam           | Sam        |
| 4      | Bob           | NULL       |
| 5      | NULL          | NULL       |
+--------+---------------+------------+
5 rows in set (0.00 sec)

महत्वपूर्ण बिंदु

  • केवल पंक्ति 1 और 3 अपडेट हुईं (जहां ListOfName NULL नहीं था)
  • पंक्ति 2, 4, 5 अपरिवर्तित रहीं क्योंकि ListOfName NULL था
  • WHERE क्लॉज के बिना सभी पंक्तियाँ अपडेट हो जातीं, NULL मान भी कॉपी हो जाते

वैकल्पिक: COALESCE का उपयोग

यदि आप NULL होने पर डिफ़ॉल्ट मान रखना चाहते हैं:

UPDATE DemoTable 
SET UserFirstName = COALESCE(ListOfName, UserFirstName);

यह ListOfName को UserFirstName में कॉपी करता है, लेकिन यदि ListOfName NULL है तो UserFirstName अपरिवर्तित रहता है।

एकाधिक कॉलम अपडेट करना

UPDATE DemoTable 
SET Col1 = SourceCol1, Col2 = SourceCol2
WHERE SourceCol1 IS NOT NULL OR SourceCol2 IS NOT NULL;
  1. - MySQL में IF() और IS NULL से कॉलम अपडेट करना

    शर्ती कॉलम अपडेट: यदि NULL तो अपडेट करें, अन्यथा नहीं IF() फ़ंक्शन और IS NULL प्रॉपर्टी का उपयोग करके एक कॉलम को अपडेट करें यदि वह NULL है, अन्यथा दूसरा कॉलम अपडेट करें, और यदि दोनों NULL नहीं हैं तो कुछ न करें। पहले टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1976 ( FirstName varchar(

  1. - MySQL में एक स्कीमा से दूसरी स्कीमा में डेटा कैसे डालें?

    सिंटैक्स एक डेटाबेस से दूसरे डेटाबेस में डेटा डालने के लिए: INSERT INTO yourDatabaseName2.yourTableName2 SELECT * FROM yourDatabaseName1.yourTableName1; उदाहरण पहले डेटाबेस web में एक टेबल बनाएं: ); रिकॉर्ड डालें: INSERT INTO DemoTable2020 VALUES (103, Mike); दूसरा टेबल डेटाबेस test में बनाएं:

  1. - MySQL में UPDATE JOIN से दूसरी टेबल के डेटा से पहली टेबल अपडेट करें

    UPDATE ... JOIN सिंटैक्स UPDATE targetTable tbl1 JOIN sourceTable tbl2 ON tbl1.commonCol = tbl2.commonCol SET tbl1.targetCol = tbl2.sourceCol; उदाहरण स्रोत टेबल (demo54): पूरा डेटा insert into demo54 values(John,Smith), (John,Smith), (David,Smith); लक्ष्य टेबल (demo55): lastName NULL insert int