postgre 在使用group by 后,怎么显示所有的字段?

今天在查询数据的时候,使用group by 一直再报一个错误,
image.png
我改了半天sql,发现显示的字段改一下就可以查询了

SELECT source_table_name FROM tb_ammeter_info GROUP BY source_table_name;

只显示分组的字段就不会报错,如果填一个其他字段或者是 * 就报错,例如:

SELECT source_table_name,name FROM tb_ammeter_info  GROUP BY source_table_name;
SELECT * FROM tb_ammeter_info GROUP BY source_table_name;

弄了半天,实在是搞不懂 postgre 这个数据库是不是有病?查询要显示所有字段,但是分组后只让显示一个,我服了,是我技术不够。
有没有大佬告知一下怎么才可以显示所有字段,我真是让 postgre这个库的骚设计搞炸了。

阅读 9.4k
1 个回答

既然用了group by,那么能在select中能单独显示的只有group by的字段,其他的只能是sum(column1), max(column2), min(column3)这样的聚合函数值。
如果要单独显示多个字段,需要把这些字段都通过group by聚合一下:

SELECT
 column_1,
 column_2,
 column_3,
 aggregate_function(column_4)
FROM
 table_name
GROUP BY
 column_1,
 column_2,
 column_3;

希望能帮助到你。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题