gpt4 book ai didi

python - Django:如何删除基于 2 列的重复行?

转载 作者:太空狗 更新时间:2023-10-30 02:03:23 26 4
gpt4 key购买 nike

我在 this answer 中发现我可以使用原始 SQL 轻松删除表中的重复行(基于 N 列的重复)。

是否有使用 Django ORM 的等价物?我在 Django 中发现的唯一内容涉及仅基于 1 列的重复。

注意:我知道在 Django 中有一种方法可以防止将来重复(基于几个字段),使用 unique_together 字段(但我以前不知道)。

谢谢。

最佳答案

将另一个答案中的 SQL 直接转换为 Django ORM:

from django.db.models import Min
# First select the min ids
min_id_objects = MyModel.objects.values('A', 'B').annotate(minid=Min('id'))
min_ids = [obj['minid'] for obj in min_id_objects]
# Now delete
MyModel.objects.exclude(id__in=min_ids).delete()

这将导致 2 个单独的 SQL 查询,而不是另一个答案中提供的一个嵌套 SQL。但我认为这已经足够了。

关于python - Django:如何删除基于 2 列的重复行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32690122/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com