【问题标题】:mySQL - Check Table for duplicates efficientlymySQL - 有效地检查表中的重复项
【发布时间】:2020-08-18 20:49:51
【问题描述】:

我有一个表“people”,其中(为简单起见)每个人都有一个 ID,这个 ID 不是唯一的,所以两个条目可以有相同的 ID。 我现在想找到我会这样做的所有重复项:

SELECT p1.Name, p2.Name
FROM Person p1 JOIN Person p2 ON p1.ID = p2.ID

示例数据如下所示:

NAME ID

A    1
B    2
C    1
D    3
E    2
F    1
D    3

结果应该是:

A,C
A,F
B,E
C,F
D,D

但我只想将条目 A 与所有其他条目进行比较,然后将 B 与除 A 之外的所有其他条目进行比较,等等。 我该怎么做?

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。样本数据和期望的结果也会有所帮助。
  • GROUP BY、HAVING 等
  • 如果再添加(D, 3)行,是否应该返回(D, D)?
  • 如果还加上 (F, 1),预期的结果是什么?
  • @jarlh 应该返回。 (但在我们的数据库中是不可能的,名称只在这个例子中使用,而不是在真实的数据库中。)

标签: mysql sql join select duplicates


【解决方案1】:

我认为你想要:

SELECT p1.Name, p2.Name
FROM Person p1 
JOIN Person p2 ON p1.ID = p2.ID AND p1.Name < p2.Name

【讨论】:

  • 我赞成这个解决方案。只需在末尾添加一个ORDER BY p1.Name,我相信这正是@Johannes-Nodop 所要求的
  • @Simon,如果你愿意,请鼓掌,但如果你想表达你的感激之情,请投赞成票。 (点击答案左侧数字上方的灰色向上箭头。)
  • 这正是我所需要的,如此简单的事情。谢谢先生(或女士)! :)
猜你喜欢
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-21
  • 1970-01-01
  • 1970-01-01
  • 2015-02-23
  • 2011-05-10
相关资源
最近更新 更多