1.【YashanDB知识库】如何设置yasql客户端的字符编码2.【YashanDB知识库】exp导出csv报错YAS-00218 string conversion failed3.【YashanDB知识库】YAS-00218 string conversion failed.4.【YashanDB知识库】虚拟机重启后启动YMP报错5.【YashanDB知识库】OM仲裁节点故障后手工切换方案和yasom仲裁重新部署后重新纳管数据库集群方案6.【YashanDB知识库】oracle与yashanDB的jdbc返回常量列"0.00"的精度和刻度不一致7.【YashanDB知识库】UNDO表空间膨胀怎么处理8.【YashanDB知识库】如何将mysql含有group by的SQL转换成崖山支持的SQL
9.【YashanDB知识库】同样建表语句,大整型数字在Oracle插入成功,在YashanDB插入失败10.【YashanDB知识库】要有好的跑批性能,有哪些参数要注意11.【YashanDB知识库】MySQL迁移至崖山char类型数据自动补空格问题12.【YashanDB知识库】kettle同步PG至崖山提示no encryption pg_hba.conf记录13.【YashanDB知识库】kettle同步大表提示java内存溢出14.【YashanDB知识库】查看表空间是否加密15.【YashanDB知识库】误配置SYSTEM级别的STATISTICS_LEVEL参数为ALL导致数据库性能下降16.【YashanDB知识库】用yasldr配置Bulkload模式作单线程迁移300G的业务数据到分布式数据库,迁移任务频繁出错17.【YashanDB知识库】YCP单机部署离线升级-rpc升级方式详细步骤18.【YashanDB知识库】YCP高可用部署离线升级-rpc升级详细步骤19.【YashanDB知识库】如何处理yasql输入交互模式下单行字符总量超过限制4000字节20.【YashanDB知识库】IMP跨网络导入慢问题21.【YashanDB知识库】insert语句有编码不识别字,执行卡住问题22.【YashanDB知识库】服务器重启后Yashandb无法启动23.【YashanDB知识库】如何处理no free block in dictionary cache24.【YashanDB知识库】in大量参数时查询性能慢25.【YashanDB知识库】Oracle pipelined函数在YashanDB中的改写26.【YashanDB知识库】update (子查询) set ORG_ID_STAN -ID 改写27.【YashanDB知识库】XMLAGG方法的兼容28.【YashanDB知识库】YMP迁移过程中报错YAS-02143或YAS-0219329.【YashanDB知识库】复合索引下in大量参数查询性能慢30.【YashanDB知识库】jdbc查询st_geometry类型的数据时抛出YAS-00101 cannot allocate 0 bytes for anlHeapMalloc异常31.【YashanDB知识库】JDBC驱动的date类型字段结果集调用getString方法只返回日期,不返回时分秒32.【YashanDB知识库】Mybatis-Plus调用YashanDB怎么设置分页33.【YashanDB知识库】ycm-YashanDB列表有数据库显示故障排除步骤34.【YashanDB知识库】单机部署报错:prohibited operation, please check if the IP and username are correct35.【YashanDB知识库】启动数据库时报错:YAS-02059 control file version 0.2.64 is incompatible with YashanDB version 0.2.6536.【YashanDB知识库】如何处理报错"UDT column batch insert" has not been implemented yet37.【YashanDB知识库】如何解决共享集群部署遇到报错:YAS-05721 invalid input parameter, reason: node name invalid.38.【YashanDB知识库】如何排查YMP报错:”OCI版本为空或OCI的架构和本地系统的架构不符“39.【YashanDB知识库】如何限制用户session连接数40.【YashanDB知识库】通过dblink查询Oracle数据时报YAS-07301异常41.【YashanDB知识库】使用leading hint调整SQL执行计划后报错YAS-04522 invalid hint leading42.【YashanDB知识库】通过触发器复制varchar(4000 char)列的数据导致乱码43.【YashanDB知识库】由于druid中间件配置导致的YAS-04003 maximum number of open cursors is 100044.【YashanDB知识库】exp 导出数据库时,报错YAS-0040245.【YashanDB知识库】YAS-00004 feature "implict table" has not been implemented yet46.【YashanDB知识库】YAS-04003 maximum number of open cursors is xxx47.【YashanDB知识库】YAS-04209 unexpected word ;48.【YashanDB知识库】yasboot集群状态命令登录失败问题49.【YashanDB知识库】YAS-00004 feature "create user" has not been implemented yet50.【YashanDB知识库】yasql / as sysdba无法登录51.【YashanDB知识库】启动yasom时报错:sqlite connection error52.【YashanDB知识库】使用vmware虚拟机安装的YashanDB,本机无法访问53.【YashanDB知识库】安装过程报错: unable to authenticate, attempted methods [none password], no supported methods remain54.【YashanDB知识库】密码带特殊符号登录报错YAS-02143 invalid username/password, login denied55.【YashanDB知识库】如何使用jdbc向YashanDB批量插入gis数据56.【YashanDB知识库】如何在备机节点上做备份和恢复57.【YashanDB知识库】收集统计信息时报错YAS-00507 date/timestamp value overflow58.【YashanDB知识库】druid连接池查询空间数据报错read time out59.【YashanDB知识库】hive初始化崖山报错YAS-0420960.【YashanDB知识库】imp导入数据库时,报错YAS-0802361.【YashanDB知识库】listagg拼接结果发生溢出62.【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断63.【YashanDB知识库】sys登录提示账户被锁,怎么处理?64.【YashanDB知识库】YAS-00402 failed to connect socket, errno 111, error message "Connection refused"65.【YashanDB知识库】YAS-02287 audit policy cannot be dropped as it is currently enabled66.【YashanDB知识库】YAS-02507 base incremental backup set does not exist67.【YashanDB知识库】YAS-02547 there is a gap in the restored archived logs on instance 1, reason: start of restored archive 35 is greater than database last archive 2168.【YashanDB知识库】YAS-02605 the current instance is not master role69.【YashanDB知识库】YAS-04379 invalid alteration of datatype70.【YashanDB知识库】YAS-05534 unsupport operation: Create sibling files to diskgroups71.【YashanDB知识库】YDC连接数据库报错yasdb return code is zero72.【YashanDB知识库】YMP迁移达梦时,报错:查询出现异常73.【YashanDB知识库】查询空间数据提示This socket has been closed.74.【YashanDB知识库】数据库用户所拥有的权限查询75.【YashanDB知识库】JDBC查询时抛出YAS-02094 current session has been killed or canceled异常76.【YashanDB知识库】YashanDB JDBC驱动查询时抛出io fail:Read timed out异常77.【YashanDB知识库】YCM上CPU负载超过实际核数是怎么回事78.【YashanDB知识库】使用Reverse索引的解决自增序列做索引,插入性能大幅提升79.【YashanDB知识库】YMP从达梦迁移到崖山,报错:不能识别文件路径,没找到csv文件80.【YashanDB知识库】YMP在迁移过程中,遇到报错:failed to open file /qianyi/ymp/ymp_23.3, errno 2, error message "No such file or directory".81.【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错82.【YashanDB知识库】进行load data的时候报找不到动态库liblz4.so83.【YashanDB知识库】如何解决删除分区后索引失效问题84.【YashanDB知识库】如何输入小写表名的函数参数85.【YashanDB知识库】审计表UNIFIED_AUDIT_TRAIL出现YAS-00220 utf8 sequence is wrong86.【YashanDB知识库】kettle做增量同步,出现报错:Unrecognized VM option 'MaxPermSize-256m'87.【YashanDB知识库】YashanDB run.log中有slow log queue is full信息88.【YashanDB知识库】YCM托管YashanDB报错 /home/yashan/.yasboot/.env is not existed89.【YashanDB知识库】使用yasboot查看YashanDB status为unconnected,但是YashanDB运行正常90.【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误91.【YashanDB知识库】使用DBeaver 插入数据 nvarchar字段插入为空92.【YashanDB知识库】崖山BIT类型对MYSQL兼容问题93.【YashanDB知识库】YDC无法通过conn切换用户94.【YashanDB知识库】YMP校验从yashandb同步到oracle的数据时,字段timestamp(0)出现不一致95.【YashanDB知识库】并发update报错YAS-02208 lock conflict in consistent write96.【YashanDB知识库】导入数据时报错:YAS-00008 type convert error:literal does not match format string97.【YashanDB知识库】druid连接池做断网测试,无法自动重新连接98.【YashanDB知识库】Hive 命令工具insert崖山数据库报错99.【YashanDB知识库】load data一次导入多个文件的数据时报错100.【YashanDB知识库】YAS-02143 invalid username/password, login denied
本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7610112.html?templateId=1718516
问题现象
以下SQL在MYSQL下均能执行成功,在崖山下执行报错。
SELECT Sname,Ssex, min(Sage) FROM Student group by Ssex;
SELECT Sname,count(0) AS counts FROM Student;
select
min(st.Sage) ,
SC.CId,
min(st.SId),
min(SC.score)
from Student st LEFT JOIN SC ON st.SId = SC.SId
group by SC.CId
order by st.Sage
;
MYSQL执行成功:
![](https://img2024.cnblogs.com/blog/3434249/202412/3434249-20241213095024719-590232832.png)
崖山上执行报错:YAS-04316 not a single-group group function
![](https://img2024.cnblogs.com/blog/3434249/202412/3434249-20241213095043590-889904299.png)
原因
SQL-92 和更早版本不允许选择列表、HAVING条件或ORDER BY列表引用未在GROUP BY子句中命名的非聚合列的查询。例如,此查询在标准 SQL-92 中是非法的,因为name选择列表中的非聚合列未出现在GROUP BY:
SELECT Sname,Ssex, min(Sage) FROM Student group by Ssex;
为了使查询在 SQL-92 中合法,Sname 必须从选择列表中去掉该列,或在 GROUP BY子句中命名该列。
SQL:1999 及更高版本允许这样的非聚合列出现在选择列中。
崖山和ORACLE在这个点都是及SQL-92为准。所以在崖上执行会报错。
解决办法
1、对于非聚合列出现在选择列中,MySQL是任取一行记录,改成用聚合函数来取最小或最大一行。
SELECT min(Sname),Ssex, min(Sage) FROM Student group by Ssex;
SELECT max(Sname),count(0) AS counts FROM Student;
2、对于MySQL中group by 加 order by,可拆分2层,里面一层是group by,外面一层是order by
SELECT
*
from (
select
SC.CId,
min(st.Sage) as mage,
min(st.SId),
min(SC.score)
from Student st LEFT JOIN SC ON st.SId = SC.SId
group by SC.CId
)
order by mage
;
总结
SQL-92 要求非group by 列不能单独出来在选择列中,比SQL:1999允许出现任选一行出现在选择列中,更严谨合理。
任选一行对于应用开发会造成疑惑,Oracle、PostgreSQL、崖山都是以SQL-92为准。MySQL 在5.7 及8.0之后的版本
默认也是以SQL-92为准, SQL_MODE默认设置为ONLY_FULL_GROUP_BY即SQL-92方式。
参考资料:
https://dev.mysql.com/doc/refman/8.4/en/group-by-handling.html
https://dev.mysql.com/doc/refman/8.4/en/group-by-modifiers.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 本地部署 DeepSeek:小白也能轻松搞定!
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 如何基于DeepSeek开展AI项目