MySQL 如何选择所有重复项
要选择重复项,可以使用子查询。让我们首先创建一个表−
mysql> create table DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(100)
-> );
查询成功,受影响的行数为0,用时0.87秒
使用插入命令在表中插入一些记录−
mysql> insert into DemoTable(Name) values('约翰');
查询成功,受影响的行数为1,用时0.16秒
mysql> insert into DemoTable(Name) values('克里斯');
查询成功,受影响的行数为1,用时0.21秒
mysql> insert into DemoTable(Name) values('约翰');
查询成功,受影响的行数为1,用时0.14秒
mysql> insert into DemoTable(Name) values('大卫');
查询成功,受影响的行数为1,用时0.13秒
mysql> insert into DemoTable(Name) values('鲍勃');
查询成功,受影响的行数为1,用时0.15秒
mysql> insert into DemoTable(Name) values('克里斯');
查询成功,受影响的行数为1,用时0.16秒
mysql> insert into DemoTable(Name) values('迈克');
查询成功,受影响的行数为1,用时0.14秒
mysql> insert into DemoTable(Name) values('罗伯特');
查询成功,受影响的行数为1,用时0.11秒
mysql> insert into DemoTable(Name) values('迈克');
查询成功,受影响的行数为1,用时0.12秒
使用select语句显示表中的所有记录−
mysql> select * from DemoTable;
阅读更多:MySQL 教程
输出
+----+--------+
| Id | Name |
+----+--------+
| 1 | 约翰 |
| 2 | 克里斯 |
| 3 | 约翰 |
| 4 | 大卫 |
| 5 | 鲍勃 |
| 6 | 克里斯 |
| 7 | 迈克 |
| 8 | 罗伯特 |
| 9 | 迈克 |
+----+--------+
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 | 约翰 |
| 2 | 克里斯 |
| 3 | 约翰 |
| 6 | 克里斯 |
| 7 | 迈克 |
| 9 | 迈克 |
+----+-------+
6 rows in set (0.09 sec)