如何在MySQL表中找到重复的值 |
您所在的位置:网站首页 › mysql怎么查询重复数据的数量 › 如何在MySQL表中找到重复的值 |
在本教程中,您将学习如何在MySQL中找到一个或多个列的重复值。 在开始之前由于原因很多,数据库中的重复事件发生很多。查找重复值是使用数据库时必须处理的重要任务之一。 对于演示,我们将创建一个名为contacts表,其中包含四个列:id,first_name,last_name和email。 USE testdb; CREATE TABLE contacts ( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(50) NOT NULL, last_name VARCHAR(50) NOT NULL, email VARCHAR(255) NOT NULL );以下语句将行插入到contacts表中: INSERT INTO contacts (first_name,last_name,email) VALUES ('Carine ','Schmitt','[email protected]'), ('Jean','King','[email protected]'), ('Peter','Ferguson','[email protected]'), ('Janine ','Labrune','[email protected]'), ('Jonas ','Bergulfsen','[email protected]'), ('Janine ','Labrune','[email protected]'), ('Susan','Nelson','[email protected]'), ('Zbyszek ','Piestrzeniewicz','[email protected]'), ('Roland','Keitel','[email protected]'), ('Julie','Murphy','[email protected]'), ('Kwai','Lee','[email protected]'), ('Jean','King','[email protected]'), ('Susan','Nelson','[email protected]'), ('Roland','Keitel','[email protected]');然后,查询表中的数据如下 - SELECT * FROM contacts;执行上面查询,得到以下结果 - +----+------------+-----------------+--------------------------------+ | id | first_name | last_name | email | +----+------------+-----------------+--------------------------------+ | 1 | Carine | Schmitt | [email protected] | | 2 | Jean | King | [email protected] | | 3 | Peter | Ferguson | [email protected] | | 4 | Janine | Labrune | [email protected] | | 5 | Jonas | Bergulfsen | [email protected] | | 6 | Janine | Labrune | [email protected] | | 7 | Susan | Nelson | [email protected] | | 8 | Zbyszek | Piestrzeniewicz | [email protected] | | 9 | Roland | Keitel | [email protected] | | 10 | Julie | Murphy | [email protected] | | 11 | Kwai | Lee | [email protected] | | 12 | Jean | King | [email protected] | | 13 | Susan | Nelson | [email protected] | | 14 | Roland | Keitel | [email protected] | +----+------------+-----------------+--------------------------------+ 14 rows in set在contacts表中,有一些行在first_name,last_name和email列中具有重复的值,下面来看看如何查询它们。 在一列中找到重复的值 在基于一列的表中找到重复值,则使用以下语句: SELECT col, COUNT(col) FROM table_name GROUP BY col HAVING COUNT(col) > 1;如果表中出现多个值,则该值将被视为重复。在这个语句中,使用COUNT函数的GROUP BY子句来计算指定列(col)的值。HAVING子句中的条件仅包含值count大于1的行,这些行是重复的行。 可以使用此查询在contacts表中查找具有重复email的所有行,如下所示: SELECT email, COUNT(email) FROM contacts GROUP BY email HAVING COUNT(email) > 1;以下显示查询的输出: +-------------------------+--------------+ | email | COUNT(email) | +-------------------------+--------------+ | [email protected] | 2 | | [email protected] | 2 | +-------------------------+--------------+ 2 rows in set如上查询结果中可以看到,有一些行具有相同的电子邮件。 在多个列中查找重复值 有时,希望基于多个列而不是一个查找重复。在这种情况下,您可以使用以下查询: SELECT col1, COUNT(col1), col2, COUNT(col2), ... FROM table_name GROUP BY col1, col2, ... HAVING (COUNT(col1) > 1) AND (COUNT(col2) > 1) AND ...只有当列的组合重复时,行才被认为是重复的,所以在HAVING子句中使用了AND运算符。 例如,要使用first_name,last_name和email列中的重复值在contacts表中查找行,请使用以下查询: SELECT first_name, COUNT(first_name), last_name, COUNT(last_name), email, COUNT(email) FROM contacts GROUP BY first_name , last_name , email HAVING COUNT(first_name) > 1 AND COUNT(last_name) > 1 AND COUNT(email) > 1;执行上面查询后,得到以下输出: +------------+-------------------+-----------+------------------+-------------------------+--------------+ | first_name | COUNT(first_name) | last_name | COUNT(last_name) | email | COUNT(email) | +------------+-------------------+-----------+------------------+-------------------------+--------------+ | Janine | 2 | Labrune | 2 | [email protected] | 2 | | Roland | 2 | Keitel | 2 | [email protected] | 2 | +------------+-------------------+-----------+------------------+-------------------------+--------------+ 2 rows in set在本教程中,您已经学会了如何根据MySQL中一个或多个列的值来找到重复的行。 上一篇: MySQL技巧 下一篇: MySQL存储过程 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |