gpt4 book ai didi

sql - Django:按聚合替换组的查询集?

转载 作者:搜寻专家 更新时间:2023-10-30 20:40:01 24 4
gpt4 key购买 nike

我的表结构:

id | file_id(foreign key) | version_id(foreign key) | function_id(foreign key)

id 和 (file_id, version_id, function_id) 是唯一的。

我正在寻找可以模拟以下 sql 查询的 Django 查询集:

select *, max(version_id) from change_metrics group by function_id order by version_id

基本上我需要为所有独特的文件函数组合获取最新版本,因为特定文件函数组合可能存在多个版本。我目前正在使用原始 sql 查询,我想用查询集替换它们。

我无法更改数据库结构,但我愿意接受各种 sql 查询或解决此问题的方法

最佳答案

假设您的模型如下所示:

class Function(models.Model):
pass

class File(models.Model):
pass

class Version(models.Model):
pass

class ChangeMetric(models.Model):
function = models.ForeignKey(Function)
file = models.ForeignKey(File)
version = models.ForeignKey(Version)

您应该能够执行以下操作:

from django.db.models import Max
Function.objects.all().annotate(max_version=Max('changemetric_set__version___id'))

关于sql - Django:按聚合替换组的查询集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24508268/

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