因此,我有两个表(pollers和errors),我正在尝试连接pollers.id=errors.poller\u id,然后使用pollers.id计算一个poller的错误数。我用过:
knex.raw(`select poller_name, description, count(pollers.id) as "poller_errors"
from pollers
inner join
errors on pollers.id = errors.poller_id
group by poller_name`)
它出现了一个错误“pollers.description\”必须出现在GROUPBY子句中或在聚合函数中使用
1条答案
按热度按时间r55awzrz1#
这个错误似乎很明显。一般来说
select
必须在group by
. 所以把它们放在那里:也就是说,有一个重要的例外,那就是所谓的“函数依赖性”。可以按主键或唯一键进行聚合,并使用同一表中的其他列。我猜是的
pollers.id
是唯一的密钥。如果是这样,你可以这样写:请注意此代码的其他更改:
所有列引用都是限定的,因此您、编译器和任何阅读代码的人都很清楚它们的来源。
表中的缩写用于别名。
双引号将从列别名中删除。不要养成转义列引用的习惯。