小编典典

在SQL表中查找重复值

sql

在一个字段中查找重复项很容易:

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

所以如果我们有一张桌子

ID   NAME   EMAIL
1    John   asd@asd.com
2    Sam    asd@asd.com
3    Tom    asd@asd.com
4    Bob    bob@asd.com
5    Tom    asd@asd.com

该查询将为我们提供John,Sam,Tom,Tom,因为它们都相同email

但是,我想要的是获取具有email 和的 重复项name

也就是说,我想获得“ Tom”,“ Tom”。

我需要这个的原因:我犯了一个错误,并允许插入重复项nameemail值。现在,我需要删除/更改重复项,因此我需要先 找到 它们。


阅读 171

收藏
2021-05-05

共1个答案

小编典典

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

只需将两个列都分组即可。

注意:较早的ANSI标准将在GROUP
BY中包含所有非聚合的列,但是随着“功能依赖”的思想而改变了这一点:

在关系数据库理论中,功能依赖关系是数据库中某个关系中两组属性之间的约束。换句话说,功能依赖性是描述关系中属性之间关系的约束。

2021-05-05