mysql - 将可能的重复标记为不同的

标签 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# 中执行此操作,但原则应该适用于任何语言。

最佳答案

感谢 e4c5,现在这个问题得到了解答。

我开始关注这样一个事实:我们将对标记为重复项,以便能够识别 future 潜在的重复项。

正如 e4c5 指出的那样,一个简单的附加列 is_distinct 就可以完成 - 然后将一对可疑重复项标记为 true。

对于新的可疑重复项列表,我像以前一样运行 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

关于mysql - 将可能的重复标记为不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40506248/

相关文章:

python - 保持具有最大重叠的相似行 Pandas 数据框

mysql - 在node-mysql中插入时如何选择行[0]?

mysql - 在插入其他表之前,将其中一个表中具有 URL 的列更改为 <a href ='URL' ></a>

java - 使用我的 Java 库将 Android 应用程序连接到本地 MySQL DB

c# - 使用 Entity Framework 在数据库上执行命令

c# - 在 LINQ 查询期间提供用户反馈

c# 数组属性基于其他数组

MySQL。向数据库插入多个重复行

insert - SQL 服务器 : bulk Insert and ignore duplicates

php - 我正在尝试使用 php 从我的域服务器从 mysql 获取数据到 android 应用程序