【postgresql】ERROR: column “xxxx.id“ must appear in the GROUP BY

news/2024/7/9 20:24:58 标签: postgresql, java, 数据库

org.postgresql.util.PSQLException: ERROR: column "xxx.id" must appear in the GROUP BY clause or be used in an aggregate function
 

错误:列“XXXX.id”必须出现在GROUP BY子句中或在聚合函数中使用

在mysql中是正常使用的,在postgresql是不可以的。

具体SQL 脱敏后的示例:

SELECT
	ID,
	tenant_id,
	remarks,
	SOURCE,
	create_user,
	create_time,
	update_user,
	update_time,
	work_source,
	platform_no
FROM
	work_base 

GROUP BY
	work_source

在标准 SQL 中,包含GROUP BY子句的查询不能引用选择列表中未在GROUP BY子句中命名的非聚合列

MySQL 扩展了 的使用,GROUP BY以便选择列表可以引用未在GROUP BY子句中命名的非聚合列。前面的查询在 MySQL 中是合法的。

可以使用此功能通过避免不必要的列排序和分组来获得更好的性能。但是,这主要在每个未在 中命名的非聚合列中的所有值GROUP BY对于每个组都相同时很有用。服务器可以从每个组中自由选择任何值,因此除非它们相同,否则选择的值是不确定的。此外,从每个组中选择值不会受到添加ORDER BY子句的影响。结果集的排序发生在选择了值之后,并且ORDER BY不影响服务器选择每个组中的哪些值。

SQL92 及更早版本不允许查询的选择列表、HAVING 条件或 ORDER BY 列表引用未在 GROUP BY 子句中命名的非聚合列。

SQL99 及更高版本根据可选功能 T301 允许此类非聚合如果它们在功能上依赖于 GROUP BY 列。

怎么破解:

在子查询中完成聚合,然后关联包含需要显示字段的表。

SELECT
	t.ID,
	t.tenant_id,
	t.remarks,
	t.SOURCE,
	t.create_user,
	t.create_time,
	t.update_user,
	t.update_time,
	t.work_source
FROM (

    SELECT  work_source
    FROM
	    work_base 
    WHERE
	     work_source IS NOT NULL
    GROUP BY
	    work_base 


) t  LEFT JOIN work_base wb   ON t.work_source= wb.work_source
  




美图欣赏


http://www.niftyadmin.cn/n/5049180.html

相关文章

buuctf web [极客大挑战 2019]BabySQL

又是你,还来?好好好 依旧老方法,先试探一手 有错误? 你有一个错误在你的SQL语法;检查与您的MariaDB服务器版本对应的手册,以便在第1行11#和password1 "附近使用正确的语法 看来是or被过滤了,试试双写…

20230925 比赛总结

反思 A 感觉有点降智,一眼 m a n a c h e r manacher manacher,但很久才想到可以二分,然后就转化成了一个区间最大值问题 B 感觉有点弱智的题,题目不难,一开始算复杂度的时候认为 [ 1.5 − 3 ] ∗ 1 0 8 [1.5-3]…

DAZ To UMA⭐三.导入Blender的配置, 及Blender快捷键

文章目录 🟥 Blender快捷键1️⃣ 3D视图快捷键2️⃣ 视角快捷键3️⃣ 编辑快捷键4️⃣ 对物体的操作🟧 Blender导入FBX的配置🟩 设置脸部骨骼大小1️⃣ 切换视角2️⃣ 缩小脸部骨骼3️⃣ 本节效果预览🟦 设置眼角膜透明度🟥 Blender快捷键 1️⃣ 3D视图快捷键 快捷键…

android 默认开启谷歌定位精准度

摘要:本文主要提供一种默认开启谷歌定位精准度开关的方案。通过调试时打开/关闭开关对比SettingsProvider的数据变化,在开机收到ACTION_BOOT_COMPLETED广播后,主动修改并填充数据,实现默认打开的需求。 在设置中实现方案 因为设…

登录业务实现 - token登录鉴权

登录业务实现: 登录成功/失败实现 -> pinia管理用户数据及数据持久化 -> 不同登录状态的模板适配 -> 请求拦截器携带token(登录鉴权) -> 退出登录实现 -> token失效(401响应拦截) 1. 登录成…

C#中的(++)和(--)运算符

目录 背景: 的前加 效果展示:​ 的后加 效果展示 :​ 总结: 背景: 自增和自减运算符存在于C/C/C#/Java等高级语言中,它的作用是在运算结束前(前置自增自减运算符 )或后(后置自增自减运算符 )将 变量的值加(或减)1。 在C#中,和--是自增和自减运…

前后台分离开发 YAPI平台 前端工程化之Vue-cli

目录 YAPI介绍前端工程化之Vue-cli前端工程化简介前端工程化入门——Vue-cli环境准备Vue项目简介创建Vue项目vue项目目录结构介绍vue项目运行方法 Vue项目开发流程 前后台混合开发这种开发模式有如下缺点: 沟通成本高:后台人员发现前端有问题&#xff0…

L1-032 Left-pad C++解法

一、题目再现 根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的React/Babel干瘫痪了。这是个…