连接表时如何使用postgres group by语句

时间:2018-06-24 18:58:55

标签: sql postgresql

我有一个非常简单的查询,我想在postgres中执行。 table1与table2和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添加到“分组依据”中,从而故意破坏了分组(所有ID都是唯一的,并且没有分组)

1 个答案:

答案 0 :(得分:1)

group by的目的是汇总数据。 group by中每个键组合的结果集中都有一行。

结果集中的列要么是group by中的键,要么是聚合。此规则有一个例外,涉及按表上的唯一键或主键进行分组,并使用其他列。

select *中使用group by根本不是SQL中正确使用聚合。

您似乎误解了此构造的目的。您可能真的是说order by -可以通过order by键对结果集进行排序,而不会更改(即总结)行数。