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

标签 sql postgresql

我有一个非常简单的查询,我想在 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/

相关文章:

MySQL Select 只从 eclipse 返回一行

mysql - 选择三个表并计数

java - 以下 SQL 查询是否正确计算表中的多个字段

postgresql - 环回返回 PU/UPSERT 上的现有记录

postgresql - scalikeJDBC + postgres - 找不到合适的驱动程序

php - 如何在mysql中存储顺序数据

mysql - 想改进 SQL 查询

postgresql - 使用数组中的每个元素调用 set-returning 函数

postgresql -\复制权限在将 CSV 导入 Ubuntu 上的 Postgres 时被拒绝

ruby-on-rails - 与 Rails 应用程序进行 pubnub 聊天的数据持久性