PGError:错误:列"p.name"必须出现在GROUP BY子句中或用于聚合函数

Sam*_*mmy 3 postgresql redmine

我的查询出错了.为什么?我不明白:(

    SELECT p.name, p.id, SUM(hours) AS hours, SUM(logged_hours) AS logged_hours
    FROM (
        SELECT project_id, date, hours, null AS logged_hours
        FROM #{ScheduleEntry.table_name}
        WHERE user_id = #{User.current.id}
            AND date BETWEEN '%s' AND '%s'
        UNION
        SELECT project_id, spent_on AS date, null AS hours, sum(#{TimeEntry.table_name}.hours) AS logged_hours
        FROM #{TimeEntry.table_name}
        WHERE user_id = #{User.current.id}
            AND spent_on BETWEEN '%s' AND '%s'
        GROUP BY project_id, date
    ) AS results
    LEFT JOIN #{Project.table_name} AS p ON p.id = results.project_id
    GROUP BY project_id
Run Code Online (Sandbox Code Playgroud)

Ste*_*nne 10

更改GROUP BY project_idGROUP BY p.name,p.id

文档说:

如果GROUP BY存在,则SELECT除了在聚合函数中之外,列表表达式无法引用未分组的列,因为对于未分组的列,将返回多个可能的值.

  • 但它会给我相同的结果?? (2认同)