首页 > 解决方案 > Postgres 错误 [列必须出现在 GROUP BY 子句中或在聚合函数中使用]

问题描述

我想查询不同的和计数:

SELECT DISTINCT way.vehicle, count(way.vehicle), way.id, way.created_at, way.updated_at, way.version 
from waypoints as way 
left join dtb_vehicle on way.vehicle = dtb_vehicle.vehicle  
where (6373 * acos (cos ( radians(21.0277644)) * cos ( radians (way.latitude)) * cos (radians (way.longitude) - radians (105.8341598)) + sin (radians (21.0277644)) * sin (radians (way.latitude)))) < 20 
AND dtb_vehicle.vehicle_type = 600 
GROUP BY way.vehicle 
HAVING count(way.vehicle) > 10

但它总是显示错误:column "way.id" 必须出现在 GROUP BY 子句中或在聚合函数中使用。

请帮我。谢谢

标签: postgresqlgroup-bycountdistinctaggregate-functions

解决方案


这只是您将遇到的四个错误中的第一个。PostreSQL 一旦遇到错误就会停止检查你的 SQL,所以这并不意味着只有一个。事实上,所有 id、created_at、updated_at 和 version 都有相同的问题。正如错误告诉您是否正在使用GROUP BY,那么SELECT语句中的所有列必须要么在GROUP BY子句中,要么需要在它们上使用某种聚合函数。假设您不想将这些添加到GROUP BY(理由是什么都不会有COUNT> 10),那么您要么必须将它们从 中删除,SELECT要么应用一些聚合函数。在你的情况下MAX可能是合适的,但在不知道更多的情况下,我真的不能说。


推荐阅读