将可能的重复标记为不同

时间:2016-11-09 11:46:55

标签: mysql linq duplicates

我有一个查询,用于显示具有相同名字姓氏的电话簿条目列表中的潜在重复项。然后,用户在检查了进一步的元数据后能够合并可疑的重复项。

我无法解决的问题是如何将对标记为不同而不是重复。

我打算创建一个表,列出不重复的对,但我找不到从生成的可疑重复列表中排除这些对的方法。 列表的SQL如下所示。我想知道返回它然后在代码中运行它但仍然不太确定,我想知道是否有人有一个有效的解决方案。

SELECT p.*, COUNT(DISTINCT p.PersonId) AS num
FROM people p
GROUP BY CONCAT(p.FirstName, ' ', p.LastName)
HAVING num>1

我在MySQL和C#中这样做,但原则应适用于任何语言。

1 个答案:

答案 0 :(得分:0)

感谢e4c5,现在已经回答了。

我已经专注于这样一个事实,即我们将对标记为重复,以便能够识别潜在的未来重复。

正如e4c5指出is_distinct会做一个简单的附加列 - 然后将这对可疑重复标记为真。

对于可疑重复项的新列表,我像以前一样运行SQL,但随后获取具有可疑重复项的名称列表,并查找具有这些名称组合但未标记为is_distinct的记录。示例C#代码和MySQL查询如下:

var peoplenames = peoplelist.Select(p=>p.FirstName + " " + p.LastName);
var joinedpeoplenames = string.Join("','", peoplenames);

SELECT p.*
FROM people p
WHERE CONCAT(p.FirstName,' ',p.LastName) IN ('?joinedpeoplenames')
GROUP BY p.PersonId