最近,楼主碰到个问题,就是使用group_concat()拼接字符串查询的时候,若长度有点长,则会被截取。但是查了mysql里面限制的最长的group_concat()长度,并没有超出。最后发现是因为查询语句最后加上了order by或者group by导致的。
我本地的mysql版本是:
我这边查询出来会进行截取,但是我同事的不会,他的版本是:5.7.14。
Navicat版本我们都是:11.1.8(64-bit)。所以猜测出现该问题原因是和mysql版本有关。
select @@global.group_concat_max_len;
可以使用上面那条语句查询限制长度,如果是使用Navicat的话,可以新建查询,然后再查。我的查询结果是1024。
这个长度是可以修改的,具体可以百度。
我的查询语句是:
select
a.id as id,
(select group_concat(d.img_url) from t_dt_img d where a.answer_id=d.answer_id) as answerImgList,
length((select group_concat(d.img_url) from t_dt_img d where a.answer_id=d.answer_id)) as answerImgListLength
from
t_dt_teacheranswer_buy a,t_dt_teacher b,t_dt_teacherAnwser c
where
b.delete_flag=0 and c.delete_flag=0 and b.id=c.teacher_id and c.id=a.answer_id
order by a.id desc;
group_concat()使用的是子查询
查询结果如下:(加group by同样会被截取)
最后一张图片的url本来是:
/filepathmap/answer/answerImage/8db1b114-53c8-47e2-ba93-800a7b5554ce.png
在图中可以看到,到e就被截取了,然后我把这串被截取的字符串重新进行长度查询:
这里显示只有341,但是上面的查询语句出来是364。也就是说,可能是显示的时候被截取了或者是其他情况。
使用不加order by的语句查询:
可以看到能够全部查出来。
通过在网上查询,没有说过group_concat后面加了order by或者group by会进行截取字符串的情况。于是我尝试修改语句的写法。最终,改成如下情况可以实现加上order by/group by不会截取字符串的结果。
select
a.id as id,
group_concat(d.img_url) as answerImgList,
length(group_concat(d.img_url)) as answerImgListLength
from
t_dt_teacheranswer_buy a left join t_dt_img d on a.answer_id=d.answer_id,
t_dt_teacher b,t_dt_teacherAnwser c
where
b.delete_flag=0 and c.delete_flag=0 and b.id=c.teacher_id and c.id=a.answer_id
group by a.id
order by a.id desc;
运行结果如下:
可以看到,最后一张图片的url能够全部查询出来,进行长度查询,也是364。
关键是将group_concat()的查询条件也放到where后面!
不知道为什么这个版本的mysql会出现这个情况,我是用远端的mysql查询也一样会被截取。远端的mysql版本是5.7.16。而且我和同事都是直接查询远端的数据库,但是我们本地结果显示的不一样。我目前猜测是,连接远端数据库进行查询的时候,和本地mysql也会有联系。☺☺
Original url: Access
Created at: 2019-08-09 17:01:55
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论