【问题标题】:couchbase Expression must depend only on group keys or aggregatescouchbase 表达式必须仅依赖于组键或聚合
【发布时间】:2021-07-03 16:28:54
【问题描述】:

为什么我在查询中收到此错误消息?

"Expression (`L`.`product_id`) must depend only on group keys or aggregates.

查询:

SELECT 
P.product_id as PID,

L.product_id as LikedPID,
COUNT(L.likedAt) as likes
FROM  products P 

INNER JOIN products_likes L
ON P.product_id = L.product_id
WHERE  P.product_id='3221132' GROUP BY P.product_id;

【问题讨论】:

  • 看起来您正在加入存储桶之间。这很好,它会起作用,但根据您的存储桶的名称,我怀疑您不需要这样做。将存储桶视为数据库。如果您有一个“产品”服务和一个“产品喜欢”服务,那么拥有两个数据库可能是有意义的。但是如果产品和产品喜欢是同一个服务/微服务的一部分,你可以考虑将它们组合到一个桶中。 (使用包含范围和集合功能的 Couchbase 7 变得更加容易)。

标签: couchbase n1ql


【解决方案1】:

出现此错误消息的原因是因为您使用的是聚合 (COUNT),但并非您在 SELECT 中投影的所有其他内容都聚合或包含在 GROUP BY 中。 (顺便说一句,我使用的每一个 SQL 都是如此,而不仅仅是 Couchbase 的 N1QL)。如果您想按两个产品 ID 进行分组,则需要更改您的 GROUP BY

GROUP BY P.product_id, L.product_id

或者您可以从您的SELECT 中省略L.product_id as LikedPID,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    相关资源
    最近更新 更多