我有一个非常简单的查询,我想在 postgres 中执行。 表 1 有一个可能与表 2 和表 3 相关。
伪查询如下
select * from table1
left join table2 ON table2.table1_id = table1.id
left join table3 ON table3.table1_id = table1.id
group by table1.id
这给了我一个错误: “列“table2.id”必须出现在 GROUP BY 子句中或在聚合函数中使用”, table3.id 相同
如果它强制我将所有表的 id 添加到 group by 中,从而击败 group by 目的(所有 id 都是唯一的并且不会发生分组),那么 Group by 的意义何在?
最佳答案
group by
的目的是汇总数据。 group by
中的每个键组合在结果集中都有一行。
结果集中的列要么是group by
中的键,要么是聚合。此规则有一个异常(exception),涉及按表上的唯一键或主键进行分组并使用其他列。
将 select *
与 group by
一起使用根本不是 SQL 中聚合的正确用法。
您似乎误解了此构造的目的。您可能真正指的是 order by
——它将通过 order by
键对结果集进行排序,而不更改(即汇总)行数。
关于sql - 连接表时如何使用postgres group by语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51013041/