【问题标题】:SQL group by query returning error: aggregate function or the GROUP BY clauseSQL group by 查询返回错误:聚合函数或 GROUP BY 子句
【发布时间】:2021-07-28 23:52:20
【问题描述】:

我有下表:

我正在尝试按 Id 列分组,以便它返回唯一的行,但以下查询返回此错误:列 'Results.EventId' 在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY 子句。

这是我正在运行的查询:

Select  events.Id, Results.EventId, results.UserId, events.Name, results.Description
FROM Events
LEFT JOIN Results ON events.Id=Results.EventId
group by events.Id

【问题讨论】:

    标签: sql


    【解决方案1】:

    如果你想让它工作,你需要这样的东西:

    Select e.Id, max(r.EventId), max(r.UserId), e.Name, max(r.Description)
    FROM Events e LEFT JOIN
         Results r
         ON e.Id = r.EventId
    group by e.Id, e.Name;
    

    请注意,每个event 只返回一行。如果results 中有多个针对给定事件的行,则会汇总结果。

    如果events(id) 是主键(或唯一键)并且您正在使用数据库,那么您可以只使用group by e.Id`。

    【讨论】:

    • 我运行了这个查询,它返回了这个错误:列 'Events.Name' 在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
    • @esty12 。 . .我修改了答案。显然您的数据库不支持使用这样的主键。
    【解决方案2】:

    使用MAX(Results.EventId) 或将该列包含在 GROUP BY 术语中。这是一个 GROUP BY / 功能依赖问题。

    请记住,由于外部连接行为,Results.EventId 可能为 null 或非 null。

    对功能上不依赖于 GROUP BY 项的其他选择列表项执行相同操作。

    【讨论】:

      猜你喜欢
      • 2012-12-07
      • 2013-08-31
      • 1970-01-01
      • 2013-07-31
      • 2022-10-25
      • 2012-04-27
      • 2020-01-07
      • 1970-01-01
      相关资源
      最近更新 更多