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

MySQL में एकाधिक कॉलम पर डुप्लीकेट रिकॉर्ड कैसे खोजें: GROUP BY HAVING

MySQL में GROUP BY ... HAVING COUNT(*) > 1 से मल्टी-कॉलम डुप्लीकेट पहचानें

सिंटैक्स:

SELECT yourColumnName1, yourColumnName2, ..., COUNT(*) AS anyVariableName 
FROM yourTableName 
GROUP BY yourColumnName1, yourColumnName2, ... 
HAVING COUNT(*) > 1;

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

1. टेबल बनाएं (कंपोजिट डुप्लीकेट के लिए):

mysql> CREATE TABLE DuplicateDemo (
    -> StudentId INT NOT NULL,
    -> StudentFirstName VARCHAR(100),
    -> StudentLastName VARCHAR(100),
    -> PRIMARY KEY(StudentId)
    -> ); 
Query OK, 0 rows affected (0.50 sec)

2. डेटा डालें (कुछ FirstName+LastName कॉम्बिनेशन डुप्लीकेट):

mysql> INSERT INTO DuplicateDemo VALUES(1,'John','Smith');
mysql> INSERT INTO DuplicateDemo VALUES(2,'Mike','Jones');
mysql> INSERT INTO DuplicateDemo VALUES(3,'David','Smith');
mysql> INSERT INTO DuplicateDemo VALUES(4,'Carol','Taylor');
mysql> INSERT INTO DuplicateDemo VALUES(5,'David','Smith');  -- डुप्लीकेट
mysql> INSERT INTO DuplicateDemo VALUES(6,'John','Smith');  -- डुप्लीकेट
mysql> INSERT INTO DuplicateDemo VALUES(7,'John','Taylor');

3. सभी रिकॉर्ड:

+-----------+------------------+-----------------+ 
| StudentId | StudentFirstName | StudentLastName | 
+-----------+------------------+-----------------+ 
| 1         | John             | Smith           | 
| 2         | Mike             | Jones           | 
| 3         | David            | Smith           | 
| 4         | Carol            | Taylor          | 
| 5         | David            | Smith           | 
| 6         | John             | Smith           | 
| 7         | John             | Taylor          | 
+-----------+------------------+-----------------+ 
7 rows in set (0.00 sec)

4. डुप्लीकेट खोजें (FirstName + LastName कॉम्बिनेशन):

mysql> SELECT StudentFirstName, StudentLastName, COUNT(*) AS Total 
    -> FROM DuplicateDemo 
    -> GROUP BY StudentFirstName, StudentLastName 
    -> HAVING COUNT(*) > 1;
+------------------+-----------------+-------+ 
| StudentFirstName | StudentLastName | Total | 
+------------------+-----------------+-------+ 
| John             | Smith           | 2     | 
| David            | Smith           | 2     | 
+------------------+-----------------+-------+ 
2 rows in set (0.00 sec)

मुख्य बिंदु:

  • GROUP BY में वे सभी कॉलम शामिल करें जिनके कॉम्बिनेशन पर डुप्लीकेट जांचना है
  • HAVING COUNT(*) > 1 केवल उन्हीं समूहों को रखता है जो एक से अधिक बार आते हैं
  • COUNT(*) पंक्तियों की गिनती करता है (NULL सहित)

उन्नत: डुप्लीकेट रो की पूरी डिटेल देखें:

SELECT d.* 
FROM DuplicateDemo d
JOIN (
    SELECT StudentFirstName, StudentLastName 
    FROM DuplicateDemo 
    GROUP BY StudentFirstName, StudentLastName 
    HAVING COUNT(*) > 1
) dup ON d.StudentFirstName = dup.StudentFirstName AND d.StudentLastName = dup.StudentLastName
ORDER BY d.StudentFirstName, d.StudentLastName;

डुप्लीकेट हटाना (एक रखकर):

-- MySQL 8.0+ CTE के साथ
WITH ranked AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY StudentFirstName, StudentLastName ORDER BY StudentId) as rn
    FROM DuplicateDemo
)
DELETE FROM DuplicateDemo WHERE StudentId IN (
    SELECT StudentId FROM ranked WHERE rn > 1
);
  1. - MySQL में UPDATE और REPLACE() का उपयोग करके एक ही क्वेरी में एकाधिक कॉलम अपडेट करना

    MySQL में एक ही UPDATE स्टेटमेंट में REPLACE() फ़ंक्शन का उपयोग करके एकाधिक कॉलम के मान एक साथ बदलें। उदाहरण: टेबल बनाना और डेटा डालना mysql> CREATE TABLE DemoTable ( -> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> StudentName VARCHAR(100), -> StudentCountryName VA

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

    MySQL में IF() फ़ंक्शन का उपयोग करके एकाधिक कॉलम पर शर्तीय तर्क लागू करना MySQL में IF() फ़ंक्शन का उपयोग करके क्वेरी स्तर पर शर्तीय तर्क लागू कर सकते हैं। यह तीन तर्क लेता है: शर्त, सत्य मान, असत्य मान। वाक्यविन्यास IF(condition, true_value, false_value) उदाहरण के साथ पूर्ण कार्यान्वयन टेबल बनान

  1. - MySQL में एक ही क्वेरी में कई कॉलम के डेटा टाइप को कैसे बदलें?

    MySQL में एक साथ कई कॉलम के डेटा टाइप बदलना MySQL में एक ही ALTER TABLE स्टेटमेंट का उपयोग करके आप एक साथ कई कॉलम के डेटा टाइप को संशोधित कर सकते हैं। इसके लिए सिंटैक्स निम्नलिखित है: ALTER TABLE yourTableName MODIFY COLUMN yourColumnName1 yourDataType1, MODIFY COLUMN yourColumnName2 yourDataType2