首页 > 数据库 > mysql教程 > 如何使用 Django ORM 查找具有重复字段值的行?

如何使用 Django ORM 查找具有重复字段值的行?

Linda Hamilton
发布: 2025-01-05 08:42:41
原创
758 人浏览过

How to Find Rows with Duplicate Field Values Using Django ORM?

Django 查询具有重复字段值的行

假设我们有一个带有非唯一字段的 Django 模型。我们需要从模型中选择该字段至少有一个重复值的所有行。

纯 SQL 方法

一种可能的解决方案是使用纯 SQL:

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

Django ORM方法

使用Django的ORM,我们可以通过values()、annotate()、order_by()和filter()的组合达到相同的结果:

from django.db.models import Count

dupes = Literal.objects.values('name') \
                    .annotate(Count('id')) \
                    .order_by() \
                    .filter(id__count__gt=1)
登录后复制

由于上面的代码返回一个 ValuesQuerySet,我们需要将其转换为常规 QuerySet 以将其用作过滤器:

duplicates = Literal.objects.filter(name__in=[item['name'] for item in dupes])
登录后复制

这种方法确保我们只选择具有重复名称值的行。

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

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