您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django:选择具有最大时间戳记的值或加入同一张表

Django:选择具有最大时间戳记的值或加入同一张表

如果您使用的是Postgresql,通常的语法是:

select distinct on (name)
    name, value
from environments_serverpropertie
where server = ...
order by name, timestamp desc

PostgreSQL文档中

SELECT DISTINCT ON(expression [,…])仅保留给定表达式等于的每组行的第一行。使用与ORDER BY相同的规则来解释DISTINCT ON表达式(请参见上文)。请注意,除非使用ORDER BY来确保所需的行首先出现,否则每个集合的“第一行”都是不可预测的。

您可以在中查看并尝试

可以从django文档中将此语法转换为django :

仅在Postgresql上,您可以传递位置参数(* fields)来指定DISTINCT应该应用的字段名称。这将转换为SELECT DISTINCT ON SQL查询

因此在django中,它将类似于:

ServerPropertie.objects.filter(...).order_by('name', '-timestamp').distinct('name')
Go 2022/1/1 18:52:19 有396人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶