You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按唯一SocialMedia_ID和最大DateTime筛选行?Django实现求助

解决Django ORM获取各SocialMedia_ID最新记录的问题

你之前用distinct('SocialMedia_id')报错,是因为这个写法是PostgreSQL专属的DISTINCT ON语法,你的数据库后端(比如MySQL、SQLite)不支持,得换一种方式实现。

对应你给出的可运行SQL,用Django ORM可以这样写:

首先导入需要的模块:

from django.db.models import Subquery, Max

然后构建查询语句:

# 子查询:按SocialMedia_id分组,获取每组的最大DateTime值
latest_dates = StatsTwitter.objects.values('SocialMedia_id').annotate(
    max_datetime=Max('DateTime')
).values('max_datetime')

# 主查询:筛选DateTime在子查询结果中的记录
accountsTwitter = StatsTwitter.objects.filter(DateTime__in=Subquery(latest_dates))

或者可以把代码合并成一行:

accountsTwitter = StatsTwitter.objects.filter(
    DateTime__in=Subquery(
        StatsTwitter.objects.values('SocialMedia_id').annotate(latest=Max('DateTime')).values('latest')
    )
)

这个写法和你提供的SQL逻辑完全一致:先通过子查询得到每个SocialMedia_id对应的最新DateTime,再筛选出所有匹配这些时间的记录,从而获取每个社交账号的最新插入记录。

内容的提问来源于stack exchange,提问作者Paul Viorel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:45:35