📜  选择重复项 - SQL (1)

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

选择重复项 - SQL

在SQL中,有时我们需要查询出重复的数据,这样的情况可能有多种,例如:

  • 数据库中存在多条相同的记录,需要找出并删除其中的重复项
  • 用户提交的表单数据中可能存在重复提交,需要通过SQL验证数据是否已存在

本文将介绍如何使用SQL查询出重复项。

查询方法

使用GROUP BYHAVING语句可以轻松查询出重复项。

例如,在一个名为persons的表中,我们要查询出名字重复的人:

SELECT name
FROM persons
GROUP BY name
HAVING COUNT(*) > 1;

解析:

  • GROUP BY name 将表中的数据按照name字段分组
  • HAVING COUNT(*) > 1 过滤出由两个或以上记录组成的组,即名字重复的人

如果要查询出所有列中存在重复项的记录,可以使用以下语句:

SELECT *
FROM persons
WHERE id NOT IN (
    SELECT MIN(id)
    FROM persons
    GROUP BY name
    HAVING COUNT(*) = 1
);

解析:

  • SELECT MIN(id) FROM persons GROUP BY name HAVING COUNT(*) = 1 查询出只有一条记录的组
  • WHERE id NOT IN 过滤掉只有一条记录的组
总结

使用GROUP BYHAVING语句可以轻松查询出重复项,同时也可以使用子查询来进行更加复杂的查询。