PSQL:使用JOIN函数时,“必须出现在GROUP BY子句中或在聚合函数中使用”错误

时间:2019-01-07 18:44:42

标签: sql psql

我正在尝试联接表,但出现错误。

我需要提供一个子查询,但不知道在哪里。这就是我尝试过的。

select q.id, q."createdAt", count(qq.id), "AccountId", "ProgramId" 
from "Quizzes" q 
join "QuizQuestions" qq on "QuizId" = q.id 
join "Accounts" a on a.id = "AccountId" 
where "ProductId" = 'abfb4db4-8605-46dd-a23d-ae52a28c1940' 
       and "selectedOptionIndex" is not null 
       and q."createdAt" >= '1-7-19' 
group by q.id;

结果:ERROR: column "a.ProgramId" must appear in the GROUP BY clause or be used in an aggregate function

1 个答案:

答案 0 :(得分:1)

所有未聚合的列均应位于GROUP BY中:

select q.id, q."createdAt", count(qq.id), "AccountId", "ProgramId"
from "Quizzes" q join
     "QuizQuestions" qq
     on qq."QuizId" = q.id join
     "Accounts" a
     on a.id = "AccountId"
where "ProductId" = 'abfb4db4-8605-46dd-a23d-ae52a28c1940' and
      "selectedOptionIndex" is not null and
       q."createdAt" >= '2017-01-17'
group by q.id, q."createdAt", "AccountId", "ProgramId";

我将日期格式更改为标准日期格式。您还应该为所有列引用加上表别名。而且,所有双引号都令人困惑。您真的需要它们吗?