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

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

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

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

select distinct on (name)    name, valuefrom environments_serverpropertiewhere server = ...order by name, timestamp desc

从PostgreSQL文档中:

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

您可以在中查看并尝试

sql fiddle demo

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

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

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

ServerPropertie.objects.filter(...).order_by('name', '-timestamp').distinct('name')


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5667817.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存