MySQL में SELECT स्टेटमेंट के भीतर शर्ती लॉजिक (IF/ELSE) लागू करने के लिए IF() फ़ंक्शन या CASE WHEN अभिव्यक्ति का उपयोग करें।
IF() फ़ंक्शन सिंटैक्स
SELECT column1, IF(condition, value_if_true, value_if_false) AS alias FROM table_name;
व्यावहारिक उदाहरण
1. टेबल बनाएं और डेटा डालें
mysql> CREATE TABLE DemoTable721 (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName VARCHAR(100),
Marks INT,
CountryName VARCHAR(100)
);
Query OK, 0 rows affected (0.57 sec)
mysql> INSERT INTO DemoTable721 (FirstName, Marks, CountryName) VALUES
('Chris', 56, 'US'),
('Robert', 78, 'UK'),
('Mike', 45, 'AUS'),
('Carol', 89, 'ENG');
Query OK, 4 rows affected (0.15 sec)
2. सभी रिकॉर्ड्स देखें
mysql> SELECT * FROM DemoTable721; +----+-----------+-------+-------------+ | Id | FirstName | Marks | CountryName | +----+-----------+-------+-------------+ | 1 | Chris | 56 | US | | 2 | Robert | 78 | UK | | 3 | Mike | 45 | AUS | | 4 | Carol | 89 | ENG | +----+-----------+-------+-------------+ 4 rows in set (0.00 sec)
3. IF() के साथ SELECT - 75 से अधिक अंक होने पर अंक दिखाएं, अन्यथा देश
mysql> SELECT FirstName, IF(Marks > 75, Marks, CountryName) AS Result FROM DemoTable721; +-----------+--------+ | FirstName | Result | +-----------+--------+ | Chris | US | -- 56 <= 75, इसलिए देश | Robert | 78 | -- 78 > 75, इसलिए अंक | Mike | AUS | -- 45 <= 75, इसलिए देश | Carol | 89 | -- 89 > 75, इसलिए अंक +-----------+--------+ 4 rows in set (0.00 sec)
CASE WHEN (अधिक शक्तिशाली)
SELECT FirstName,
CASE
WHEN Marks >= 90 THEN 'Excellent'
WHEN Marks >= 75 THEN 'Good'
WHEN Marks >= 50 THEN 'Average'
ELSE 'Needs Improvement'
END AS Grade
FROM DemoTable721;
+-----------+----------------------+
| FirstName | Grade |
+-----------+----------------------+
| Chris | Average |
| Robert | Good |
| Mike | Needs Improvement |
| Carol | Excellent |
+-----------+----------------------+
IF() vs CASE WHEN तुलना
| विशेषता | IF() | CASE WHEN |
|---|---|---|
| शर्तें | एकल शर्त | एकाधिक शर्तें |
| पठनीयता | सरल के लिए अच्छी | जटिल के लिए बेहतर |
| नेस्टिंग | मुश्किल | आसान |
| प्रकार सुरक्षा | परिणाम प्रकार पहली शाखा से | सभी शाखाओं से सामान्य प्रकार |
नेस्टेड IF उदाहरण
SELECT FirstName,
IF(Marks > 75, 'High',
IF(Marks > 50, 'Medium', 'Low')) AS Level
FROM DemoTable721;
WHERE क्लॉज में IF/CASE
-- IF का उपयोग SELECT * FROM DemoTable721 WHERE IF(Marks > 75, 1, 0) = 1; -- CASE का उपयोग (अधिक पठनीय) SELECT * FROM DemoTable721 WHERE CASE WHEN Marks > 75 THEN 1 ELSE 0 END = 1;