postgresql - 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 子句中或在聚合函数中使用。
请帮我。谢谢
解决方案
这只是您将遇到的四个错误中的第一个。PostreSQL 一旦遇到错误就会停止检查你的 SQL,所以这并不意味着只有一个。事实上,所有 id、created_at、updated_at 和 version 都有相同的问题。正如错误告诉您是否正在使用GROUP BY
,那么SELECT
语句中的所有列必须要么在GROUP BY
子句中,要么需要在它们上使用某种聚合函数。假设您不想将这些添加到GROUP BY
(理由是什么都不会有COUNT
> 10),那么您要么必须将它们从 中删除,SELECT
要么应用一些聚合函数。在你的情况下MAX
可能是合适的,但在不知道更多的情况下,我真的不能说。
推荐阅读
- sparql - 如何通过官网属性P856查询维基数据(SPARQL)?
- javascript - JavaScript - 在包含一些文本的数组中搜索元素
- java - java.lang.NoClassDefFoundError:解析失败:Landroid/arch/lifecycle/LifecycleRegistry;在 android.support.v4.app.SupportActivity
- java - 如何在项目外部将 JAR 打包到 Spark (Scala) 中?
- mysql - 使用 node.js 和 ejs 从 mysql 下载 PDF
- c# - 使用实体框架核心指定处理两个连接表(以前处理多对多)的多对多
- cordova - Cordova 相机在访问另一条路线后拍摄照片问题
- javascript - 是否存在应手动将对象属性设置为未定义的情况?
- python - API 端点仅从 mongoDB 返回一条记录
- java - 二叉树节点编辑功能的问题