代码之家  ›  专栏  ›  技术社区  ›  Mailo Světel

条令-按外国聚合值筛选

  •  1
  • Mailo Světel  · 技术社区  · 15 年前

    我怎样才能在教义的何处使用聚合函数的结果呢?

    例如,我想知道有很多愚蠢数字的用户。

    SELECT  u.name, COUNT(p.id) AS users_phonenumber_count
    FROM    users u
    
        INNER JOIN phonenumbers p ON p.user_id = u.id
    WHERE
        users_phonenumber_count > 10
    GROUP BY
        u.id
    

    我怎样才能进入 用户电话号码 在DQL的哪里?

    2 回复  |  直到 15 年前
        1
  •  0
  •   Magnus Hagander    15 年前

    你需要利用拥有,而不是在哪里。另外,您需要按查询中实际存在的内容进行分组,在本例中是U.name。假设u.name是唯一的-如果不是,则需要同时按u.id和u.name分组。

    SELECT  u.name, COUNT(*) AS users_phonenumber_count
    FROM    users u
    
        INNER JOIN phonenumbers p ON p.user_id = u.id
    GROUP BY
        u.name
    HAVING
        count(*) > 10
    
        2
  •  0
  •   benlumley    15 年前

    我记不清我是如何做到这一点的确切细节,但要记住,它必须使用“拥有”

    这是因为SQL的工作方式,而不是特定的条令——在不能比较计算值的地方,必须使用HAVING(或者在计数(某物)的地方可以使用HAVING)