Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 连接表时如何使用postgres group by语句_Sql_Postgresql - Fatal编程技术网

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

Sql 连接表时如何使用postgres group by语句,sql,postgresql,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子句中,或在聚合函数中使用, 表3.id中的内容相

我想在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子句中,或在聚合函数中使用, 表3.id中的内容相同

Group by的意义是什么?如果它迫使我将所有表的id添加到Group by中,从而使Group by失效,那么所有id都是唯一的,不会发生分组。

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

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

在SQL中,将select*与group by一起使用并不是正确的聚合用法


你似乎误解了这个结构的目的。可能您真正的意思是order by,它将按order by键对结果集进行排序,而不进行更改,即汇总行数。

好吧,您的查询一开始就没有任何意义。GROUPBY用于执行一些聚合,而您的查询不执行任何聚合。你应该解释一下你在这里想要实现什么。反问:如果你想要单个值而不是聚合,那么分组的意义是什么?查询是搜索函数的一部分,它搜索表2和表3中的字段。我不关心表2和表3中匹配的所有条目,我只希望表1中的每个id都有一行,其中包含表2和表3中的所有字段我只希望表1中的每个id都有一行,其中包含表2和表3中的所有字段表2和表3中哪一行的所有字段?你知道可能不止一个吗?