MySQL में IF() फंक्शन और CASE एक्सप्रेशन से सशर्त तर्क लागू कर सकते हैं।
तरीका 1: CASE एक्सप्रेशन (मानक SQL, अधिक लचीला)
SELECT id, FirstName,
CASE
WHEN id = 2 AND FirstName = 'Carol' THEN 'Welcome Carol'
ELSE 'You are not Carol with id 2'
END AS Message
FROM IfelseDemo;
आउटपुट:
+------+-----------+-----------------------------+
| id | FirstName | Message |
+------+-----------+-----------------------------+
| 1 | John | You are not Carol with id 2 |
| 2 | Carol | Welcome Carol |
| 3 | John | You are not Carol with id 2 |
| 4 | Carol | You are not Carol with id 2 |
| 5 | John | You are not Carol with id 2 |
+------+-----------+-----------------------------+
तरीका 2: IF() फंक्शन (सरल शर्तों के लिए)
SELECT id, FirstName,
IF(id = 2 AND FirstName = 'Carol', 'Welcome Carol', 'Not Carol') AS Message
FROM IfelseDemo;
तरीका 3: CASE का सरल रूप (मान तुलना)
SELECT id,
CASE id
WHEN 1 THEN 'First'
WHEN 2 THEN 'Second'
ELSE 'Other'
END AS position
FROM IfelseDemo;
UPDATE/DELETE में उपयोग
-- सशर्त अपडेट
UPDATE products
SET price = CASE
WHEN category = 'premium' THEN price * 1.1
WHEN category = 'sale' THEN price * 0.8
ELSE price
END;
-- सशर्त डिलीट
DELETE FROM logs
WHERE created_at < CASE
WHEN @@hostname = 'prod-server' THEN DATE_SUB(NOW(), INTERVAL 1 YEAR)
ELSE DATE_SUB(NOW(), INTERVAL 30 DAY)
END;
IF vs CASE
| विशेषता | IF() | CASE |
|---|---|---|
| शर्तें | एक शर्त | एकाधिक शर्तें |
| पठनीयता | सरल के लिए अच्छी | जटिल तर्क के लिए बेहतर |
| मानक SQL | नहीं (MySQL-विशिष्ट) | हाँ (ANSI SQL) |
| NULL हैंडलिंग | IFNULL() अलग | WHEN IS NULL संभव |
नोट
MySQL में IF ... THEN ... ELSE ... END IF ब्लॉक केवल स्टोर्ड प्रोग्राम (प्रोसीजर, फंक्शन, ट्रिगर) में काम करता है, SELECT क्वेरी में नहीं।