在数据库中查找特定字段的重复条目
Posted
技术标签:
【中文标题】在数据库中查找特定字段的重复条目【英文标题】:Find duplicate entries in database for specific fields 【发布时间】:2014-07-17 12:29:20 【问题描述】:我的模型具有姓名、学校、电子邮件、地址等字段。
我想找出name
和school
字段具有相同条目的行?
eg:
name school email
abc mps abc@gmail.com
abc mps abc@gmail.com
xyz vps xyz@gmail.com
abc mps abc@gmail.com
poi vps poi@gmail.com
jkl vps jkl@gmail.com
name
abc 和 school
mps 有 3 个条目,xyz 和 vps 有 2 个条目
我可以嵌套for
循环和迭代方式来检查表中所有行的姓名和学校字段。那将是性能损失 (n*n)
还有其他方法可以查到吗?
【问题讨论】:
你有你要找的名字和学校,还是想得到所有的名字/学校组合? 我认为这里解决了***.com/questions/8989221/… 基本上你按名字或学校分组,然后检查 count > 1 【参考方案1】:我不确定我是否理解您,您只想获得具有 SAME 姓名和学校的结果,或者只想获得 ONE 结果姓名和学校?
这句话将返回 ALL 名为“abc”和学校“mps”的学校
result_list = model.objects.filter(name='abc').filter(school='mps')
如果您试图为每个名称和学校仅获得 ONE 个结果,则必须使用 distinct() 喜欢:
result_list = model.objects.filter(name='abc').filter(school='mps').distinct()
`
【讨论】:
【参考方案2】:distinct() 将达到目的。 以下将解决您的问题
model_name.objects.values_list('name').distinct()
如果你想要字典,那么你必须这样做
model_name.objects.values('name').distinct()
希望能解决你的问题!!
【讨论】:
@FrEaKmAn “返回一个在其 SQL 查询中使用 SELECT DISTINCT 的新 QuerySet。这将消除查询结果中的重复行。”当您转到我提到的链接时,这就是官方文档所说的 但这如何解决我想找出姓名和学校字段有相同条目的行的问题?以上是关于在数据库中查找特定字段的重复条目的主要内容,如果未能解决你的问题,请参考以下文章