首页 > 数据库 > mysql教程 > 如何在 Django 中选择具有重复字段值的行?

如何在 Django 中选择具有重复字段值的行?

Susan Sarandon
发布: 2025-01-04 11:09:35
原创
738 人浏览过

How to Select Rows with Duplicate Field Values in Django?

在 Django 中选择具有重复字段值的行

从模型中选择给定字段至少有一个重复值的所有行,可以结合使用Django的聚合和过滤功能:

  1. 聚合值: 使用 annotate() 方法计算指定字段的重复值计数。例如,对于具有名称字段的模型:
from django.db.models import Count
dupes = Literal.objects.values('name').annotate(id_count=Count('id'))
登录后复制
  1. 根据计数过滤: 使用filter()方法选择计数超过的行1. 这将返回一个包含重复项的 ValuesQuerySet值:
dupes = dupes.filter(id_count__gt=1)
登录后复制
  1. 获取完整记录:要获取完整记录,请使用 in 过滤器选择名称字段与重复值匹配的行:
dupes = Literal.objects.filter(name__in=[item['name'] for item in dupes])
登录后复制

替代 SQL解决方案:

如果愿意,您还可以使用子查询来获得相同的结果:

SELECT *
FROM literal
WHERE name IN (
    SELECT name
    FROM literal
    GROUP BY name
    HAVING COUNT(*) > 1
);
登录后复制

以上是如何在 Django 中选择具有重复字段值的行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板