【发布时间】:2016-11-09 11:46:54
【问题描述】:
我有一个查询,要显示具有相同 firstname、lastname 的电话簿条目列表中的潜在重复项。然后,用户可以在进一步检查元数据后合并可疑重复项。
我不太清楚的是如何有一种方法将对标记为不同而不是重复。
我打算创建一个表来列出不重复的对,但我找不到将这些从生成的可疑重复列表中排除的方法。 列表的 SQL 如下。我想知道返回这个然后在代码中运行它,但仍然不太确定,我想知道是否有人有一个有效的解决方案。
SELECT p.*, COUNT(DISTINCT p.PersonId) AS num
FROM people p
GROUP BY CONCAT(p.FirstName, ' ', p.LastName)
HAVING num>1
我在 MySQL 和 C# 中执行此操作,但原则应适用于任何语言。
【问题讨论】:
-
您在寻找与上述 sql 查询等效的 linq 吗?如果是这样,请提供您尝试过的 linq。
-
您好 viki888 感谢您的提问,抱歉,不清楚。不,我只是想知道一旦创建了可能的重复列表,我是否应该使用 LINQ 或其他方法来排除标记为不重复的对。
-
我想这就是他要问的...数据库中有两个同名的人(A 和 B)。系统认为他们可能是同一个人(重复),但用户知道他们是不同的人,所以她以某种方式将他们标记为唯一。然后将再次具有相同名称的人 C 添加到数据库中。系统应该能够标记出人 C 可能是 A 或 B 的副本,但也知道 A 和 B 不是同一个人。
-
AFAIK,用你已经拥有的列是不可能的。为此,您需要在表中添加一列。当管理员或版主查看可能的重复项时,他需要将其标记为非重复项,并且需要将其存储在让我们称之为
is_distinct列。 -
e4c5 你是个天才,谢谢 - 我想我需要将配对标记为不同的,但当然你不需要 - 我现在觉得有点愚蠢 - 想太聪明了跨度>
标签: mysql linq duplicates