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

MySQL में NOT IN के साथ कंडीशनल GROUP BY लागू करके डुप्लिकेट कॉलम मानों से रिकॉर्ड्स फिल्टर करें

NOT IN के साथ कंडीशनल GROUP BY का उपयोग

आइए पहले एक टेबल बनाते हैं:

mysql> CREATE TABLE DemoTable (
    Name VARCHAR(40),
    Score INT
);

रिकॉर्ड्स इन्सर्ट करें:

mysql> INSERT INTO DemoTable VALUES ('Adam', 89);
mysql> INSERT INTO DemoTable VALUES ('Adam', 89);
mysql> INSERT INTO DemoTable VALUES ('Chris', 89);
mysql> INSERT INTO DemoTable VALUES ('Chris', 89);
mysql> INSERT INTO DemoTable VALUES ('Bob', 98);
mysql> INSERT INTO DemoTable VALUES ('Bob', 89);

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

mysql> SELECT * FROM DemoTable;

आउटपुट:

+-------+-------+
| Name  | Score |
+-------+-------+
| Adam  | 89    |
| Adam  | 89    |
| Chris | 89    |
| Chris | 89    |
| Bob   | 98    |
| Bob   | 89    |
+-------+-------+

NOT IN() का उपयोग करके कंडीशनल GROUP BY प्राप्त करने के लिए क्वेरी:

mysql> SELECT DISTINCT Name
    FROM DemoTable
    WHERE Name NOT IN (
        SELECT Name FROM DemoTable WHERE Score <> 89
    );

आउटपुट:

+-------+
| Name  |
+-------+
| Adam  |
| Chris |
+-------+

व्याख्या: सबक्वेरी उन सभी नामों को चुनती है जिनका स्कोर 89 से अलग है (यहां केवल 'Bob' का स्कोर 98 है)। मुख्य क्वेरी फिर उन नामों को बाहर करती है और केवल उन्हीं नामों को चुनती है जिनके सभी रिकॉर्ड्स का स्कोर 89 है। इस तरह 'Adam' और 'Chris' चुने जाते हैं क्योंकि उनके सभी रिकॉर्ड्स में स्कोर 89 है, जबकि 'Bob' का एक रिकॉर्ड 98 का है इसलिए वह बाहर हो जाता है।

  1. - MySQL में GROUP BY और MIN() से डुप्लिकेट कॉलम मान वाले समूह का न्यूनतम मान प्राप्त करें

    किसी कॉलम (जैसे Class) के डुप्लिकेट मान वाले समूहों में से दूसरे कॉलम (जैसे Amount) का न्यूनतम मान प्राप्त करने के लिए GROUP BY और MIN() एग्रीगेट फ़ंक्शन का उपयोग करें। टेबल बनाएं mysql> CREATE TABLE DemoTable1875 ( Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Class VARCHAR(20), Amoun

  1. - MySQL में MIN() और GROUP BY से डुप्लिकेट कॉलम वाले समूह की पहली टाइमस्टैम्प तिथि प्राप्त करें

    किसी कॉलम (जैसे Value) के डुप्लिकेट मान वाले समूहों में से सबसे पहली (न्यूनतम) टाइमस्टैम्प प्राप्त करने के लिए MIN() एग्रीगेट फ़ंक्शन के साथ GROUP BY का उपयोग करें। टेबल बनाएं mysql> CREATE TABLE DemoTable1870 ( Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Value INT, ShippingTimestamp

  1. - MySQL में डुप्लिकेट आईडी के लिए फ्लोटिंग कॉलम का न्यूनतम मान प्राप्त करें

    GROUP BY और MIN() से डुप्लिकेट आईडी समूह की न्यूनतम कीमत पाएं डुप्लिकेट आईडी वाले समूहों में फ्लोटिंग-पॉइंट कॉलम का न्यूनतम मान प्राप्त करने के लिए MIN() के साथ GROUP BY का उपयोग करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable2005 ( Id int, Price float ); Query OK, 0 rows affected (