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

MySQL IF() फंक्शन में SELECT स्टेटमेंट को तर्क के रूप में उपयोग करना

MySQL IF() फंक्शन के पहले तर्क (शर्त) में SELECT सबक्वेरी उपयोग कर सकते हैं।

नमूना डेटा: Students टेबल

mysql> SELECT * FROM Students;
+----+-----------+-----------+----------+----------------+
| id | Name      | Country   | Language | Course         |
+----+-----------+-----------+----------+----------------+
| 1  | Francis   | UK        | English  | Literature     |
| 2  | Rick      | USA       | English  | History        |
| 3  | Correy    | USA       | English  | Computers      |
| 4  | Shane     | France    | French   | Computers      |
| 5  | Validimir | Russia    | Russian  | Computers      |
| 6  | Steve     | Australia | English  | Geoinformatics |
| 7  | Rahul     | India     | Hindi    | Yoga           |
| 8  | Harshit   | India     | Hindi    | Computers      |
| 9  | Harry     | NZ        | English  | Electronics    |
+----+-----------+-----------+----------+----------------+

क्वेरी: IF() में सबक्वेरी

mysql> SELECT ID, 
    IF(
        (SELECT COUNT(*) FROM Students WHERE Language = 'English') >
        (SELECT COUNT(*) FROM Students WHERE Language <> 'English'),
        CONCAT('Name is ', Name),
        CONCAT('Course is ', Course)
    ) AS 'Name/Course'
FROM Students;

परिणाम

+----+-------------------+
| ID | Name/Course       |
+----+-------------------+
| 1  | Name is Francis   |
| 2  | Name is Rick      |
| 3  | Name is Correy    |
| 4  | Name is Shane     |
| 5  | Name is Validimir |
| 6  | Name is Steve     |
| 7  | Name is Rahul     |
| 8  | Name is Harshit   |
| 9  | Name is Harry     |
+----+-------------------+

व्याख्या

  • पहली सबक्वेरी: अंग्रेजी बोलने वालों की गिनती (5)
  • दूसरी सबक्वेरी: गैर-अंग्रेजी बोलने वालों की गिनती (4)
  • 5 > 4 सत्य → सभी पंक्तियों के लिए पहला ब्रांच निष्पादित
  • CONCAT('Name is ', Name) प्रत्येक पंक्ति के लिए

प्रदर्शन विचार

  • सबक्वेरी प्रत्येक पंक्ति के लिए निष्पादित हो सकती है (ऑप्टिमाइज़र पर निर्भर)
  • बेहतर: सबक्वेरी को CTE/वेरिएबल में निकालें
  • या CROSS JOIN (SELECT COUNT(...)) उपयोग करें
सलाह: IF() में सबक्वेरी संभव है लेकिन बड़े डेटासेट पर धीमी हो सकती है। संभव हो तो JOIN या विंडो फंक्शन उपयोग करें।
  1. - MySQL सेलेक्ट स्टेटमेंट में IF() फ़ंक्शन?

    IF() फ़ंक्शन एक शर्त के आधार पर वैल्यू वापस करता है। सिंटैक्स इस प्रकार है: SELECT IF(yourCondition, yourMessageIfConditionBecomesTrue,yourMessageIfConditionBecomesFalse) from yourTableName; आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable    (    Value int   &nb

  1. - क्या MySQL क्वेरी में SELECT NULL स्टेटमेंट का उपयोग कर सकते हैं?

    हां, हम MySQL क्वेरी में SELECT NULL स्टेटमेंट का उपयोग कर सकते हैं। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable ( Name varchar(100) ); Query OK, 0 rows affected (0.49 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(Chris)

  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