我如何在 Doctrine 的 where 中使用聚合函数的结果?
例如,我想知道有很多数字的用户。
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 的哪个位置访问 users_phonenumber_count?
最佳答案
您需要使用 HAVING,而不是 WHERE。此外,您需要根据查询中实际存在的内容进行分组,在本例中为 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
关于php - Doctrine - 按外部聚合值过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1643499/