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

MySQL में IN() और सबक्वेरी से एकाधिक परिणाम लौटाएं

MySQL में IN() ऑपरेटर का उपयोग सबक्वेरी के साथ करके एकाधिक मानों के आधार पर पंक्तियों को फ़िल्टर किया जा सकता है। यह तब उपयोगी होता है जब फ़िल्टर मान किसी अन्य क्वेरी से डायनामिक रूप से प्राप्त करने हों।

सिंटैक्स

SELECT column_list FROM table_name
WHERE column_name IN (SELECT column_name FROM table_name [WHERE condition]);

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

टेबल बनाएं:

mysql> CREATE TABLE DemoTable1317 (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(20)
);

डेटा डालें:

mysql> INSERT INTO DemoTable1317(Name) VALUES('Chris Brown');
mysql> INSERT INTO DemoTable1317(Name) VALUES('John Doe');
mysql> INSERT INTO DemoTable1317(Name) VALUES('Adam Smith');
mysql> INSERT INTO DemoTable1317(Name) VALUES('John Smith');
mysql> INSERT INTO DemoTable1317(Name) VALUES('David Miller');
mysql> INSERT INTO DemoTable1317(Name) VALUES('Carol Taylor');

सभी रिकॉर्ड देखें:

mysql> SELECT * FROM DemoTable1317;
+----+--------------+
| Id | Name         |
+----+--------------+
| 1  | Chris Brown  |
| 2  | John Doe     |
| 3  | Adam Smith   |
| 4  | John Smith   |
| 5  | David Miller |
| 6  | Carol Taylor |
+----+--------------+

सबक्वेरी के साथ IN() का उपयोग

mysql> SELECT Name FROM DemoTable1317
    -> WHERE Id IN (SELECT Id FROM DemoTable1317);

परिणाम

+--------------+
| Name         |
+--------------+
| Chris Brown  |
| John Doe     |
| Adam Smith   |
| John Smith   |
| David Miller |
| Carol Taylor |
+--------------+

व्याख्या

  • सबक्वेरी (SELECT Id FROM DemoTable1317) सभी Id मान लौटाती है: 1, 2, 3, 4, 5, 6
  • बाहरी क्वेरी उन Id मानों से मेल खाने वाली पंक्तियों का चयन करती है
  • परिणामस्वरूप सभी पंक्तियां लौटाई जाती हैं (क्योंकि सभी Id सबक्वेरी में हैं)

व्यावहारिक उपयोग केस

यह पैटर्न तब शक्तिशाली होता है जब सबक्वेरी में WHERE क्लॉज हो:

-- केवल 'John' से शुरू होने वाले नामों वाले Id प्राप्त करें
SELECT Name FROM DemoTable1317
WHERE Id IN (SELECT Id FROM DemoTable1317 WHERE Name LIKE 'John%');
+------------+
| Name       |
+------------+
| John Doe   |
| John Smith |
+------------+

महत्वपूर्ण नोट्स

  • सबक्वेरी को **एक ही कॉलम** लौटाना चाहिए
  • IN() NULL मानों को अलग तरह से संभालता है - यदि सबक्वेरी NULL लौटाती है, तो तुलना UNKNOWN देती है
  • बड़े डेटासेट के लिए EXISTS या JOIN बेहतर प्रदर्शन दे सकते हैं
  • MySQL 8.0+ में CTE (WITH क्लॉज) पठनीयता में सुधार करता है

आधुनिक विकल्प (MySQL 8.0+)

WITH filtered_ids AS (
    SELECT Id FROM DemoTable1317 WHERE Name LIKE 'John%'
)
SELECT Name FROM DemoTable1317 WHERE Id IN (SELECT Id FROM filtered_ids);

IN() के साथ सबक्वेरी जटिल फ़िल्टरिंग तर्क को सरल, पठनीय SQL में व्यक्त करने का एक शक्तिशाली तरीका है।

  1. - MySQL में AND और OR ऑपरेटर का उपयोग करके मल्टीपल रो रिकॉर्ड्स कैसे लौटाएं

    AND और OR ऑपरेटर्स को मिलाकर जटिल फ़िल्टरिंग एकाधिक शर्तों को AND और OR ऑपरेटर्स के साथ जोड़कर जटिल फ़िल्टरिंग करें। कोष्ठक () का उपयोग प्राथमिकता नियंत्रित करने के लिए करें। आइए पहले एक टेबल बनाते हैं: mysql> CREATE TABLE DemoTable ( StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Stu

  1. - एकल MySQL क्वेरी में एक कॉलम में एकाधिक मान कैसे डालें?

    सिंटैक्स एक कॉलम में एकाधिक मान डालने के लिए, निम्नलिखित सिंटैक्स का उपयोग करें: INSERT INTO yourTableName VALUES (yourValue1), (yourValue2), ... (yourValueN); उदाहरण सबसे पहले एक टेबल बनाते हैं: ); अब INSERT कमांड का उपयोग करके रिकॉर्ड डालें: INSERT INTO DemoTable2022 VALUES (Computer Science)

  1. - MySQL में परिणाम समूहित करें और सूची में दिखाएं

    समाधान GROUP BY के साथ ORDER BY का उपयोग करके गणना और क्रमबद्ध करें। सिंटैक्स SELECT yourColumnName, COUNT(*) AS aliasName FROM yourTableName GROUP BY yourColumnName ORDER BY yourColumnName; उदाहरण टेबल बनाएं: INSERT INTO demo7 (first_name) VALUES (John), (David), (John), (Bob), (David), (David),