📜  在列中查找重复项 SQL (1)

📅  最后修改于: 2023-12-03 15:23:30.498000             🧑  作者: Mango

在列中查找重复项 SQL

在某些情况下,我们需要在数据库的列中查找重复的值。这个问题看起来很简单,但是我们需要使用 SQL 中的一些函数来解决它。

示例表格

在本文中,我们将使用以下示例表格:

CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  email VARCHAR(50)
);

INSERT INTO users (id, name, email) VALUES
  (1, 'Tom', 'tom@example.com'),
  (2, 'Jerry', 'jerry@example.com'),
  (3, 'Mickey', 'mickey@example.com'),
  (4, 'Minnie', 'mickey@example.com'),
  (5, 'Donald', 'donald@example.com'),
  (6, 'Daisy', 'donald@example.com');
查找重复的行

为了查找表中的重复行,我们可以使用以下 SQL 查询:

SELECT name, email, COUNT(*) count
FROM users
GROUP BY name, email
HAVING count > 1;

该查询将返回重复的用户名和电子邮件地址,以及它们在表中出现的次数:

| name | email | count | | ------- | ------------------| ----- | | Mickey | mickey@example.com| 1 | | Donald | donald@example.com| 2 |

我们可以在 HAVING 子句中使用 count 函数来过滤出出现次数大于 1 的重复行。

查找重复的列

如果我们只想查找某一列中的重复值,可以使用以下 SQL 查询:

SELECT email, COUNT(*) count
FROM users
GROUP BY email
HAVING count > 1;

该查询将返回重复的电子邮件地址及其在表中出现的次数:

| email | count | | ------------------| ----- | | mickey@example.com| 2 | | donald@example.com| 2 |

我们可以在 GROUP BY 子句中只指定我们想要查找重复值的列,然后在 HAVING 子句中使用 count 函数来过滤出出现次数大于 1 的重复值。

总结

在本文中,我们介绍了如何使用 SQL 查找表格中的重复行或列。我们使用了 COUNT 函数和 GROUP BY 子句来实现它。除了本文中的方法之外,还有一些其他的方法可以用于解决这个问题。