【问题标题】:django annotate/count two columns at the same timedjango 同时注释/计算两列
【发布时间】:2014-03-09 20:06:17
【问题描述】:

我有一个名为关系的表。我想返回关系最多的前 10 个用户。想想最受欢迎的用户列表。

我已经看到了返回一列中出现次数最多的示例,但是两者都有吗?以下是表格示例:

user_a | user_b
     1 |      2
     2 |      5
     3 |      4
     4 |      5
     1 |      4
     2 |      6
     1 |      5

以下是模型示例:

class Relationship(models.Model):
    user_a = models.ForeignKey(User, related_name='user_a')
    user_b = models.ForeignKey(User, related_name='user_b')

如何在 django 中创建这样的查询集?

【问题讨论】:

    标签: python sql django postgresql django-models


    【解决方案1】:

    您可以像这样使用原始查询:

    select user, count(*)
    from (
    select user_a as user
    from table
    union all
    select user_b as user
    from table )
    group by user
    order by count(*) desc
    

    【讨论】:

    • 这不太行。我试图直接在数据库上运行它并得到以下错误: 错误:FROM 中的子查询必须有一个别名 我编辑了查询,所以第 7 行如下所示:“from userprofile_relationship ) as foo” 然后它只返回一个数字.
    猜你喜欢
    • 2016-04-04
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 2015-11-22
    • 2012-03-07
    • 2019-01-13
    相关资源
    最近更新 更多