डुप्लिकेट चुनने के लिए सबक्वेरी का उपयोग करें।
टेबल बनाएं
mysql> create table DemoTable (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(100)
-> );
Query OK, 0 rows affected (0.87 sec)
रिकॉर्ड्स डालें
mysql> insert into DemoTable(Name) values('John');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable(Name) values('John');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(Name) values('David');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(Name) values('Bob');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(Name) values('Mike');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(Name) values('Robert');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(Name) values('Mike');
Query OK, 1 row affected (0.12 sec)
सभी रिकॉर्ड्स देखें
mysql> select * from DemoTable;
आउटपुट:
+----+--------+ | Id | Name | +----+--------+ | 1 | John | | 2 | Chris | | 3 | John | | 4 | David | | 5 | Bob | | 6 | Chris | | 7 | Mike | | 8 | Robert | | 9 | Mike | +----+--------+ 9 rows in set (0.00 sec)
सभी डुप्लिकेट चुनने का क्वेरी
mysql> select * from DemoTable
-> where Name in (select Name from DemoTable group by Name having count(*) > 1);
आउटपुट:
+----+-------+ | Id | Name | +----+-------+ | 1 | John | | 2 | Chris | | 3 | John | | 6 | Chris | | 7 | Mike | | 9 | Mike | +----+-------+ 6 rows in set (0.09 sec)
व्याख्या: सबक्वेरी group by Name having count(*) > 1 उन नामों को ढूंढती है जो एक से अधिक बार आते हैं। मुख्य क्वेरी उन नामों वाली सभी पंक्तियां लौटाती है।