如何检查MySQL表中多列重复项?
要在MySQL中检查重复项,可以使用具有by子句的group。语法如下。
select yourColumnName1,yourColumnName2,......N,count(*) as anyVariableName from yourTableName group by yourColumnName1,yourColumnName2 having count(*) > 1;
为了理解上述语法,让我们创建一个表。创建表的查询如下。
create table DuplicateDemo -> ( -> StudentId int not null, -> StudentFirstName varchar(100), -> StudentLastName varchar(100), -> Primary Key(StudentId) -> );
使用insert命令在表中插入一些记录。查询如下。
insert into DuplicateDemo values(1,'John','Smith'); insert into DuplicateDemo values(2,'Mike','Jones'); insert into DuplicateDemo values(3,'David','Smith'); insert into DuplicateDemo values(4,'Carol','Taylor'); insert into DuplicateDemo values(5,'David','Smith'); insert into DuplicateDemo values(6,'John','Smith'); insert into DuplicateDemo values(7,'John','Taylor');
使用select语句显示表中的所有记录。
查询如下-
select *from DuplicateDemo;
以下是输出。
+-----------+------------------+-----------------+ | 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)
这是用于检查表中重复项的查询。
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)