MySQL IF() फ़ंक्शन के साथ सशर्त अपडेट
MySQL का IF() फ़ंक्शन आपको एक ही UPDATE स्टेटमेंट में सशर्त तर्क के आधार पर अलग-अलग मान सेट करने की अनुमति देता है। सिंटैक्स: IF(शर्त, मान_यदि_सत्य, मान_यदि_असत्य)।
उदाहरण: विशिष्ट नामों को सशर्त रूप से अपडेट करना
पहले एक नाम टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable1436 (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(20)
-> );
Query OK, 0 rows affected (1.06 sec)
mysql> INSERT INTO DemoTable1436 (Name) VALUES
-> ('Chris'), ('David'), ('Bob'), ('David'), ('David');
Query OK, 5 rows affected (0.22 sec)
mysql> SELECT * FROM DemoTable1436;
+----+-------+
| Id | Name |
+----+-------+
| 1 | Chris |
| 2 | David |
| 3 | Bob |
| 4 | David |
| 5 | David |
+----+-------+
5 rows in set (0.00 sec)
IF() के साथ सशर्त UPDATE
केवल ID=2 के लिए, यदि नाम 'David' है तो 'Carol Taylor' में बदलें:
mysql> UPDATE DemoTable1436
-> SET Name = IF(Name = 'David', 'Carol Taylor', Name)
-> WHERE Id = 2;
Query OK, 1 row affected (0.31 sec)
Rows matched: 1 Changed: 1 Warnings: 0
परिणाम
mysql> SELECT * FROM DemoTable1436; +----+--------------+ | Id | Name | +----+--------------+ | 1 | Chris | | 2 | Carol Taylor | | 3 | Bob | | 4 | David | | 5 | David | +----+--------------+ 5 rows in set (0.00 sec)
व्याख्या
IF(Name = 'David', 'Carol Taylor', Name)जांचता है कि क्या नाम 'David' है- सत्य: 'Carol Taylor' पर सेट करता है
- असत्य: मूल नाम रखता है
WHERE Id = 2केवल उस पंक्ति तक सीमित करता है
एकाधिक शर्तों के लिए CASE स्टेटमेंट
UPDATE DemoTable1436
SET Name = CASE
WHEN Name = 'David' THEN 'Carol Taylor'
WHEN Name = 'Bob' THEN 'Robert'
ELSE Name
END
WHERE Id IN (2, 3);
IF() बनाम CASE
| पहलू | IF() | CASE |
|---|---|---|
| शर्तें | एकल शर्त | एकाधिक शर्तें |
| पठनीयता | सरल के लिए अच्छी | जटिल तर्क के लिए बेहतर |
| मानक SQL | MySQL-विशिष्ट | ANSI SQL मानक |