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

MySQL में GROUP BY HAVING और सबक्वेरी से एकाधिक कॉलम में सटीक डुप्लिकेट पंक्तियाँ खोजें

एकाधिक कॉलम में सटीक समान मान वाली डुप्लिकेट पंक्तियाँ खोजने के लिए GROUP BY + HAVING COUNT(*) > 1 को सबक्वेरी में उपयोग करें।

टेबल बनाएं

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

डेटा डालें

mysql> INSERT INTO DemoTable1861(Name, Marks) VALUES('John', 45);
mysql> INSERT INTO DemoTable1861(Name, Marks) VALUES('Chris', 74);
mysql> INSERT INTO DemoTable1861(Name, Marks) VALUES('David', 89);
mysql> INSERT INTO DemoTable1861(Name, Marks) VALUES('Chris', 74);  -- डुप्लिकेट
mysql> INSERT INTO DemoTable1861(Name, Marks) VALUES('John', 49);

डुप्लिकेट (Name+Marks दोनों समान) खोजें

mysql> SELECT Id, Name, Marks FROM DemoTable1861
    WHERE (Name, Marks) IN (
        SELECT Name, Marks FROM DemoTable1861
        GROUP BY Name, Marks
        HAVING COUNT(*) > 1
    );

आउटपुट:

+----+-------+-------+
| Id | Name  | Marks |
+----+-------+-------+
|  2 | Chris |    74 |
|  4 | Chris |    74 |
+----+-------+-------+

व्याख्या

  1. सबक्वेरी: (Name, Marks) समूह जिनकी गणना > 1 है → केवल ('Chris', 74)।
  2. मुख्य क्वेरी: उन समूहों से मेल खाने वाली सभी पंक्तियाँ लौटाती है।

विकल्प: विंडो फ़ंक्शन (MySQL 8.0+)

SELECT Id, Name, Marks FROM (
    SELECT *, COUNT(*) OVER (PARTITION BY Name, Marks) AS cnt
    FROM DemoTable1861
) t WHERE cnt > 1;

सिंगल कॉलम डुप्लिकेट के लिए सरल क्वेरी

SELECT Name FROM DemoTable1861
GROUP BY Name HAVING COUNT(*) > 1;

नोट

  • (col1, col2) IN (subquery) को रो कंस्ट्रक्टर तुलना कहते हैं।
  • इंडेक्स (Name, Marks) पर होने से सबक्वेरी तेज़ होगी।
  • डुप्लिकेट हटाने के लिए: DELETE t1 FROM table t1 JOIN table t2 ... पैटर्न उपयोग करें।
  1. MySQL में विशिष्ट कॉलम नाम वाली टेबल कैसे खोजें MySQL में विशिष्ट कॉलम नाम वाली टेबल कैसे खोजें

    information_schema.columns टेबल को क्वेरी करके डेटाबेस में विशिष्ट कॉलम नाम वाली सभी टेबल खोजें। सिंटैक्स SELECT DISTINCT table_name FROM information_schema.columns WHERE column_name LIKE %yourSearchValue% AND table_schema = DATABASE(); उदाहरण: Client वाली कॉलम खोजना SELECT DISTINCT table_name FR

  1. - MySQL में GREATEST() से किसी भी कॉलम में NULL वाली पंक्तियाँ खोजें

    GREATEST() फ़ंक्शन अपने तर्कों में से सबसे बड़ा मान लौटाता है। यदि कोई भी तर्क NULL है, तो परिणाम NULL होता है। इस गुण का उपयोग करके किसी भी कॉलम में NULL वाली पंक्तियाँ खोज सकते हैं। टेबल बनाएं mysql> CREATE TABLE DemoTable1862 ( Value1 INT, Value2 INT, Value3 INT, Value4 INT ); डेटा डालें

  1. - MySQL में विशेष वर्ण वाले मान को खोजकर NULL से कैसे बदलें?

    MySQL में किसी विशिष्ट मान (जिसमें विशेष वर्ण शामिल हों) को खोजकर उसे NULL से बदलने के लिए, साधारण UPDATE स्टेटमेंट के साथ WHERE क्लॉज़ का उपयोग करें। विशेष वर्णों के लिए स्ट्रिंग लिटरल में उचित एस्केपिंग या कोटिंग आवश्यक है। उदाहरण: अंडरस्कोर वाले कोड को NULL करना डेमो टेबल बनाएं: mysql> CREA