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

MySQL में SELECT स्टेटमेंट के अंदर CASE स्टेटमेंट का उपयोग कैसे करें?

MySQL में CASE WHEN का उपयोग करके सशर्त तर्क

MySQL में CASE WHEN अभिव्यक्ति आपको SQL क्वेरीज़ के अंदर सशर्त तर्क (if-else तर्क) लागू करने की अनुमति देती है। यह SELECT, WHERE, ORDER BY, GROUP BY आदि में उपयोग किया जा सकता है।

टेबल बनाना

mysql> CREATE TABLE DemoTable (
    -> FirstName VARCHAR(20),
    -> Score INT
    -> );
Query OK, 0 rows affected (0.63 sec)

डेटा डालना

mysql> INSERT INTO DemoTable VALUES ('John', 46);
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES ('John', 78);
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES ('John', 69);
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES ('Chris', 78);
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES ('Chris', 89);
Query OK, 1 row affected (0.17 sec)

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

mysql> SELECT * FROM DemoTable;
+-----------+-------+
| FirstName | Score |
+-----------+-------+
| John      |    46 |
| John      |    78 |
| John      |    69 |
| Chris     |    78 |
| Chris     |    89 |
+-----------+-------+
5 rows in set (0.00 sec)

CASE WHEN का उपयोग करके जांचें कि क्या स्कोर 69 मौजूद है

mysql> SELECT FirstName, 
    -> MAX(CASE WHEN Score = 69 THEN 1 ELSE 0 END) AS isExistsOrNot 
    -> FROM DemoTable 
    -> GROUP BY FirstName;

परिणाम

+-----------+---------------+
| FirstName | isExistsOrNot |
+-----------+---------------+
| John      |             1 |
| Chris     |             0 |
+-----------+---------------+
2 rows in set (0.00 sec)

व्याख्या

  • CASE WHEN Score = 69 THEN 1 ELSE 0 END: प्रत्येक पंक्ति के लिए, यदि स्कोर 69 है तो 1 लौटाता है, अन्यथा 0
  • MAX(...): प्रत्येक नाम समूह के लिए, यदि कोई पंक्ति 1 लौटाती है, तो MAX 1 होगा
  • GROUP BY FirstName: नाम के अनुसार परिणाम समूहित करता है

CASE सिंटैक्स के दो रूप

1. सरल CASE (मान की तुलना)

CASE expression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ...
    ELSE default_result
END

2. खोजा गया CASE (शर्तों का मूल्यांकन) - अधिक लचीला

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END

व्यावहारिक उदाहरण

स्कोर ग्रेडिंग

SELECT FirstName, Score,
    CASE 
        WHEN Score >= 90 THEN 'A'
        WHEN Score >= 80 THEN 'B'
        WHEN Score >= 70 THEN 'C'
        WHEN Score >= 60 THEN 'D'
        ELSE 'F'
    END AS Grade
FROM DemoTable;

सशर्त गणना

SELECT FirstName,
    SUM(CASE WHEN Score >= 80 THEN 1 ELSE 0 END) AS HighScores,
    SUM(CASE WHEN Score < 60 THEN 1 ELSE 0 END) AS LowScores
FROM DemoTable
GROUP BY FirstName;

ORDER BY में CASE

SELECT * FROM DemoTable
ORDER BY CASE 
    WHEN FirstName = 'John' THEN 1
    WHEN FirstName = 'Chris' THEN 2
    ELSE 3
END;

WHERE में CASE (कम आम)

SELECT * FROM DemoTable
WHERE CASE 
    WHEN FirstName = 'John' THEN Score > 70
    ELSE Score > 80
END;

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

  1. हमेशा ELSE क्लॉज शामिल करें (NULL से बचने के लिए)
  2. सरल तुलनाओं के लिए सरल CASE का उपयोग करें
  3. जटिल शर्तों के लिए खोजा गया CASE का उपयोग करें
  4. नेस्टेड CASE से बचें - पठनीयता के लिए CTE या व्यू का उपयोग करें
  1. - MySQL प्रोसीजर: SELECT स्टेटमेंट को दो बार प्रदर्शित करना

    परिचय MySQL स्टोर्ड प्रोसीजर में एकाधिक SELECT स्टेटमेंट हो सकते हैं, और प्रत्येक अपना अलग परिणाम सेट लौटाता है। यह लेख दिखाता है कि कैसे एक प्रोसीजर में दो SELECT स्टेटमेंट बनाएं और कॉल करें। स्टोर्ड प्रोसीजर बनाना DELIMITER ; महत्वपूर्ण बिंदु: DELIMITER // - स्टेटमेंट डिलीमीटर को अस्थायी रूप स

  1. - MySQL में WHEN क्लॉज के साथ CASE स्टेटमेंट लागू करें

    MySQL में CASE स्टेटमेंट का उपयोग सशर्त तर्क (conditional logic) लागू करने के लिए किया जाता है। यह आपको SQL क्वेरीज़ में IF-ELSE जैसी कार्यक्षमता प्रदान करता है। सिंटैक्स SELECT *, CASE WHEN आपकी_शर्त THEN आपका_स्टेटमेंट WHEN आपकी_शर्त THEN आपका_स्टेटमेंट ... E

  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