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

MySQL में JOIN का उपयोग करके एकाधिक डुप्लिकेट प्रविष्टियाँ हटाना

MySQL में किसी कॉलम में डुप्लिकेट मानों वाली सभी पंक्तियों को एक बार में हटाने के लिए DELETE के साथ JOIN (सेल्फ-जॉइन) का उपयोग करें।

सिंटैक्स

DELETE t1 FROM table_name t1
JOIN table_name t2 ON t1.duplicate_column = t2.duplicate_column
WHERE t2.duplicate_column = 'value_to_delete';

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

1. टेबल बनाएं और डुप्लिकेट डेटा डालें

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR(100)
);
Query OK, 0 rows affected (0.69 sec)

mysql> INSERT INTO DemoTable (FirstName) VALUES 
('Chris'), ('Bob'), ('Mike'), ('Adam'), ('Bob'), ('Adam'), ('Bob'), ('Mike');
Query OK, 8 rows affected (0.20 sec)

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

mysql> SELECT * FROM DemoTable;
+----+-----------+
| Id | FirstName |
+----+-----------+
| 1  | Chris     |
| 2  | Bob       |
| 3  | Mike      |
| 4  | Adam      |
| 5  | Bob       |
| 6  | Adam      |
| 7  | Bob       |
| 8  | Mike      |
+----+-----------+
8 rows in set (0.00 sec)

3. 'Bob' वाली सभी पंक्तियाँ हटाएं (सेल्फ-जॉइन के साथ)

mysql> DELETE DemoTable
FROM DemoTable
JOIN DemoTable tbl ON DemoTable.FirstName = tbl.FirstName
WHERE tbl.FirstName = 'Bob';
Query OK, 3 rows affected (0.15 sec)

4. परिणाम जांचें

mysql> SELECT * FROM DemoTable;
+----+-----------+
| Id | FirstName |
+----+-----------+
| 1  | Chris     |
| 3  | Mike      |
| 4  | Adam      |
| 6  | Adam      |
| 8  | Mike      |
+----+-----------+
5 rows in set (0.00 sec)

व्याख्या

  • टेबल को स्वयं के साथ जॉइन किया जाता है (DemoTable और tbl)
  • ON DemoTable.FirstName = tbl.FirstName समान नाम वाली पंक्तियों से मिलान करता है
  • WHERE tbl.FirstName = 'Bob' केवल 'Bob' वाले समूह को लक्षित करता है
  • DELETE DemoTable (पहला टेबल एलियास) जॉइन से मेल खाने वाली पंक्तियों को हटाता है

सरल विकल्प (अधिकांश मामलों के लिए)

-- सीधा और स्पष्ट
DELETE FROM DemoTable WHERE FirstName = 'Bob';

उपरोक्त सरल क्वेरी समान परिणाम देती है। JOIN दृष्टिकोण जटिल परिदृश्यों के लिए उपयोगी है जैसे:

  • डुप्लिकेट समूहों में से केवल कुछ पंक्तियाँ हटाना
  • दो अलग टेबल्स के बीच डुप्लिकेट मिलान
  • जटिल मिलान शर्तें

सभी डुप्लिकेट हटाएं (एक प्रति रखें)

-- न्यूनतम ID रखें, बाकी हटाएं
DELETE t1 FROM DemoTable t1
JOIN DemoTable t2 ON t1.FirstName = t2.FirstName AND t1.Id > t2.Id;

DELETE JOIN सिंटैक्स विविधताएं

-- MySQL विशिष्ट
DELETE t1 FROM t1 JOIN t2 ON ... WHERE ...

-- मानक SQL (कुछ DB में)
DELETE FROM t1 USING t1 JOIN t2 ON ... WHERE ...
  1. - MySQL में AND ऑपरेटर का उपयोग करके विशिष्ट रिकॉर्ड कैसे हटाएं?

    MySQL में DELETE स्टेटमेंट के WHERE क्लॉज में AND ऑपरेटर का उपयोग करके एकाधिक शर्तों के आधार पर विशिष्ट पंक्तियों को हटाया जा सकता है। सिंटैक्स DELETE FROM table_name WHERE condition1 AND condition2 AND ...; उदाहरण तालिका बनाएं और डेटा डालें: mysql> CREATE TABLE DemoTable (Id INT, Name VARCHAR(

  1. - MySQL में शर्त के आधार पर केवल कुछ पंक्तियां कैसे हटाएं?

    MySQL में DELETE स्टेटमेंट के WHERE क्लॉज का उपयोग करके शर्त के आधार पर केवल विशिष्ट पंक्तियों को हटाया जा सकता है। सिंटैक्स DELETE FROM table_name WHERE condition; उदाहरण तालिका बनाएं: mysql> CREATE TABLE DemoTable (Id INT, Name VARCHAR(20)); mysql> INSERT INTO DemoTable VALUES (100, Bob),

  1. - MySQL में IN() क्लॉज़ के साथ एक क्वेरी में रिकॉर्ड कैसे डिलीट करें?

    MySQL में एक ही क्वेरी में एकाधिक विशिष्ट रिकॉर्ड डिलीट करने के लिए, DELETE स्टेटमेंट के साथ IN() ऑपरेटर का उपयोग करें। यह एकाधिक DELETE स्टेटमेंट चलाने से अधिक कुशल और पठनीय है। उदाहरण: विशिष्ट StudentId वाले रिकॉर्ड डिलीट करना डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1922 ( StudentI