for email in Email.objects.values_list('email', flat=True).distinct():
Email.objects.filter(pk__in=Email.objects.filter(email=email).values_list('id', flat=True)[1:]).delete()
或书的名字:
for name in Book.objects.values_list('name', flat=True).distinct():
Book.objects.filter(pk__in=Artwork.objects.filter(name=name).values_list('id', flat=True)[3:]).delete()
SELECT `email`.`id`,
`email`.`title`,
`email`.`body`,
...
...
FROM `email`
WHERE `email`.`id` IN (
SELECT DISTINCT (
SELECT U0.`id`
FROM `email` U0
WHERE U0.`email` = V0.`approval_status`
ORDER BY U0.`id` ASC
LIMIT 1
) AS `pk`
FROM `agent` V0
)
9条答案
按热度按时间uurity8g1#
这个查询不会给予你重复的--也就是说,它会给你数据库中的所有行,通过电子邮件排序。
但是,我假设您的意思是您的数据库中有重复的数据。在这里添加
distinct()
不会有帮助,因为即使您只有一个字段,您也有一个自动的id
字段-因此id+email的组合不是唯一的。假设你只需要一个字段
email_address
,重复数据消除,你可以这样做:但是,您应该真正解决根本问题,并从数据库中删除重复数据。
例如,通过电子邮件字段删除重复的电子邮件:
或书的名字:
niwlg2el2#
为了检查重复,您可以在
Django
中执行GROUP_BY
和HAVING
,如下所示。我们使用Django**annotations
**。现在循环上述数据并删除除第一个
emails
之外的所有其他emails
(取决于需求或其他)。tgabmvqs3#
您可以在查询集的末尾链接
.distinct()
来过滤重复项。查看:http://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.distinct9lowa7mx4#
您可能可以使用
distinct()
函数,具体取决于您的型号。如果您只想从模型中检索单个字段,您可以执行以下操作:这应该会给予你一个有序的电子邮件列表。
von4xj4u5#
也可以使用
set()
ztmd8pv56#
使用,自我
queryset.annotate()
!这个查询集去做这个查询。
便签纸
mkshixfv7#
我使用下面的方法从数据库中删除了重复的条目,希望这能帮助到其他人。
ttp71kqs8#
如果你想从查询集中删除重复信息,例如。假设你有一个用户模型,其中包含name、email等字段,你想删除重复的email,你可以简单地编写这个查询
它将返回所有唯一的电子邮件。
ldxq2e6h9#
你可以使用这个原始查询:
your_model.objects.raw("select * from appname_Your_model group by column_name")