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

MySQL में SELECT स्टेटमेंट में IF/ELSE शर्त का उपयोग कैसे करें?

MySQL में IF() फ़ंक्शन और CASE WHEN का उपयोग करके सशर्त तर्क

MySQL SELECT स्टेटमेंट में सशर्त तर्क के लिए दो मुख्य तरीके प्रदान करता है: सरल IF() फ़ंक्शन और अधिक शक्तिशाली CASE WHEN अभिव्यक्ति।

टेबल बनाना

mysql> CREATE TABLE DemoTable1966 (
    -> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> UserName VARCHAR(20),
    -> PhotoLiked INT
    -> );
Query OK, 0 rows affected (0.00 sec)

डेटा डालना

mysql> INSERT INTO DemoTable1966(UserName, PhotoLiked) VALUES ('Chris', 57);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1966(UserName, PhotoLiked) VALUES ('David', 100);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1966(UserName, PhotoLiked) VALUES ('Mike', 68);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1966(UserName, PhotoLiked) VALUES ('Sam', 78);
Query OK, 1 row affected (0.00 sec)

सभी रिकॉर्ड्स देखना

mysql> SELECT * FROM DemoTable1966;
+--------+----------+------------+
| UserId | UserName | PhotoLiked |
+--------+----------+------------+
|      1 | Chris    |         57 |
|      2 | David    |        100 |
|      3 | Mike     |         68 |
|      4 | Sam      |         78 |
+--------+----------+------------+
4 rows in set (0.00 sec)

IF() फ़ंक्शन का उपयोग (सरल शर्तें)

mysql> SELECT IF(PhotoLiked > 75, UserName, 'Likes are less') AS Result 
    -> FROM DemoTable1966;

परिणाम

+------------------------------------------------+
| Result                                         |
+------------------------------------------------+
| Likes are less                                 |
| David                                          |
| Likes are less                                 |
| Sam                                            |
+------------------------------------------------+
4 rows in set (0.00 sec)

IF() सिंटैक्स

IF(condition, value_if_true, value_if_false)
  • condition: कोई भी अभिव्यक्ति जो TRUE/FALSE/NULL मूल्यांकन करती है
  • value_if_true: condition TRUE होने पर लौटाया गया मान
  • value_if_false: condition FALSE या NULL होने पर लौटाया गया मान

CASE WHEN अभिव्यक्ति (जटिल शर्तें)

SELECT 
    UserName,
    PhotoLiked,
    CASE 
        WHEN PhotoLiked >= 90 THEN 'Excellent'
        WHEN PhotoLiked >= 75 THEN 'Good'
        WHEN PhotoLiked >= 60 THEN 'Average'
        ELSE 'Needs Improvement'
    END AS Rating
FROM DemoTable1966;

परिणाम

+----------+------------+----------------------+
| UserName | PhotoLiked | Rating               |
+----------+------------+----------------------+
| Chris    |         57 | Needs Improvement    |
| David    |        100 | Excellent            |
| Mike     |         68 | Average              |
| Sam      |         78 | Good                 |
+----------+------------+----------------------+

IF() vs CASE WHEN तुलना

विशेषताIF()CASE WHEN
शर्तेंएकलएकाधिक
पठनीयतासरल के लिए अच्छीजटिल के लिए बेहतर
मानक SQLनहीं (MySQL-विशिष्ट)हाँ (ANSI SQL)
नेस्टिंगसंभव लेकिन गन्दास्पष्ट
NULL संचालनFALSE के रूप मेंस्पष्ट WHEN IS NULL

WHERE क्लॉज में उपयोग

-- IF() के साथ
SELECT * FROM DemoTable1966 
WHERE IF(PhotoLiked > 75, 1, 0) = 1;

-- CASE के साथ (अधिक मानक)
SELECT * FROM DemoTable1966 
WHERE CASE WHEN PhotoLiked > 75 THEN 1 ELSE 0 END = 1;

ORDER BY में उपयोग

SELECT * FROM DemoTable1966
ORDER BY CASE 
    WHEN PhotoLiked >= 90 THEN 1
    WHEN PhotoLiked >= 75 THEN 2
    ELSE 3
END, UserName;

एग्रीगेशन में उपयोग

SELECT 
    COUNT(*) AS Total,
    SUM(IF(PhotoLiked > 75, 1, 0)) AS HighLikes,
    SUM(IF(PhotoLiked <= 75, 1, 0)) AS LowLikes
FROM DemoTable1966;

NULL संचालन

-- IF() NULL को FALSE मानता है
SELECT IF(NULL, 'true', 'false');  -- 'false'

-- CASE के लिए स्पष्ट NULL जांच
CASE 
    WHEN col IS NULL THEN 'Null'
    WHEN col > 10 THEN 'High'
    ELSE 'Low'
END

सर्वोत्तम अभ्यास

  1. सरल द्विआधारी शर्तों के लिए IF() उपयोग करें
  2. एकाधिक शर्तों या मानक SQL अनुपालन के लिए CASE WHEN उपयोग करें
  3. हमेशा ELSE क्लॉज शामिल करें
  4. गहरे नेस्टिंग से बचें - CTE या व्यू पर विचार करें
  1. - MySQL में महीने के अनुसार रिकॉर्ड कैसे चुनें (SELECT by Month)?

    MySQL में MONTH() फ़ंक्शन का उपयोग करके दिनांक कॉलम से महीना निकालकर रिकॉर्ड फ़िल्टर किए जा सकते हैं। यह मासिक रिपोर्ट और विश्लेषण के लिए आवश्यक है। सिंटैक्स SELECT * FROM table_name WHERE MONTH(date_column) = month_number; उदाहरण तालिका बनाएं और डेटा डालें: mysql> CREATE TABLE DemoTable (Ship

  1. - MySQL में UPDATE के साथ सबक्वेरी (SELECT) का उपयोग कैसे करें?

    MySQL में UPDATE स्टेटमेंट के WHERE क्लॉज में सबक्वेरी का उपयोग करके अन्य तालिका या शर्त के आधार पर पंक्तियों को अपडेट किया जा सकता है। सिंटैक्स UPDATE table_name SET column = value WHERE column IN (SELECT ... FROM ...); उदाहरण तालिका बनाएं: mysql> CREATE TABLE DemoTable (Id INT, Name VARCHAR(2

  1. - MySQL में CONCAT_WS() से कन्कैटिनेट करके शर्त के साथ ROW कैसे चुनें?

    CONCAT_WS() फ़ंक्शन CONCAT_WS(separator, col1, col2, ...) सेपरेटर के साथ कॉलम जोड़ता है। उदाहरण insert into demo38 values(10,John,Smith,1990-10-01), (11,David,Miller,1994-01-21), (11,John,Doe,1992-02-01), (12,Adam,Smith,1996-11-11), (13,Chris,Brown,1997-03-10); क्वेरी: user_id 11 और 13 के लिए फ़