繁体   English   中英

如何在Django查询中获取每个人的最近添加的记录

[英]how to get recently added records for each person in django query

我需要获取每个人最近添加的记录。 我有一个像下面的桌子

  id     person     date     task
   1      xxx    2015-11-18    3
   2      yyy    2015-11-17    2
   3      yyy    2015-11-19    2
   4      xxx    2015-11-30    1

我想在queryset中得到这样的输出

   id     person     date     task
    3      yyy    2015-11-19    2
    4      xxx    2015-11-30    1

每个人都有两个记录。 但是我需要为Django queryset中的每个人获取最近添加的记录。

提前致谢

这是关于正确的查询的信息,但您必须注意order_by的使用与文档中所述的区别https : //docs.djangoproject.com/en/1.8/ref/models/querysets/#django.db。 models.query.QuerySet.distinct

Record.objects.order_by('person', '-date').distinct('person')

在PostgreSQL中,您可以使用

Window Function:over()

   SELECT id
        ,person
        ,dte
        ,task
    FROM (
        SELECT *
            ,row_number() OVER (
                PARTITION BY person ORDER BY dte DESC
                ) rn
        FROM rt
        ) t
    WHERE rn = 1

要么

DISTINCT Clause

SELECT DISTINCT ON (person) id
    ,person
    ,dte
    ,task
FROM rt
ORDER BY person
    ,dte DESC

SQLFIDDLE-DEMO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM