MySQL流浪记(六)—— CONCAT到GROUP_CONCAT的沿途风景(图文详解)

本文中的案例如下,可以自己测试一下,有问题可以留言哦。

CREATE TABLE staff (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),job_id INT, joindate DATE,salary DECIMAL(7,2)
);
INSERT INTO staff(name,job_id,joindate,salary) VALUES 
('孙悟空',4,'2000-12-17',8000.00),
('卢俊义',3,'2001-02-20',16000.00),
('林冲',3,'2001-02-22',12500.00),
('唐僧',2,'2001-04-02',29750.00),
('李逵',4,'2001-09-28',12500.00)
('孙悟空',4,'2000-12-17',8000.00),
('林冲',3,'2001-02-22',12500.00);

CONCAT

  CONCAT函数用于将两个字符串连接起来,形成一个单一的字符串。
  语法:CONCAT(str1,str2,)
  输出:拼接的字符串,如果有任何一个参数为null,则返回值为null。

SELECT CONCAT(id,name,job_id) id_name_job_id FROM staff;

在这里插入图片描述
  这样简单粗暴的将三个字符串连接起来,看起来是有一点不美观,如果用符号连接起来会美观一些。来试一下。

SELECT CONCAT(id,' - ',name,' - ',job_id) id_name_job_id FROM staff;

在这里插入图片描述
  可以看出来,将分割符以字符的形式添加到他们之间,这样就美观很多了。那么问题来了,现在是三个字符可以很轻松地直接在他们之间添加分隔符 ,如果有一百个字符串呢,有一千个字符串呢,这就是一个比较大的工程了,聪明的前辈们肯定想到了这一点,CONCAT_WS函数就出现了。

CONCAT_WS

  CONCAT_WS和CONCAT函数用法基本是相同的,相当于是CONCAT的一个升级,它省去了CONCAT函数逐一添加分隔符的繁琐操作,可以一劳永逸的添加分隔符。
  语法:CONCAT_WS(separator,str1,str2,)
  输出:以separator为分隔符的拼接字符串。分隔符不能为NULL,否则返回NULL

SELECT CONCAT_WS(' - ',id,name,job_id) id_name_jod_id FROM staff;

在这里插入图片描述
  这样就很方便的将他们风格,可以说是简单又美观。细心的你肯定发现了他们之间有好多重复的信息,比如说“孙悟空”和“李逵”的工号重复了,“卢俊义”和“林冲”的工号页重复了,这样说起来还可以变的更美观一些,于是GROUP_CONCAT就出现了。

GROUP_CONCAT

  GROUP_CONCAT和前面的两个函数的功能基本上是一样的,也是将字符进行拼接,不同之处在于它“返回由属于一组的列值连接组合而成的结果”,也就是说他是将链接的字符进行分组后输出的。
  语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )
  返回:将GROUP BY产生的同一个组的字符进行连接。

SELECT job_id,GROUP_CONCAT(name) name FROM staff GROUP BY job_id;

在这里插入图片描述
  这样就可以将相同工号的员工分到一组进行输出,但是这样还不是很完美,因为有一些人被重复统计了,看来同名同姓的人还不少,可以使用去重函数DISTINCT,然后再进行分组,这样虽然可以,但是SQL语句不够简洁,可以直接再GROUP_CONCAT函数中直接进行去重。

SELECT job_id, GROUP_CONCAT(DISTINCT name) name FROM staff GROUP BY job_id;

在这里插入图片描述
  可以看到,去重的效果还是可以的。既然可以去重了,排序可不可以呢?
在这里插入图片描述  可以发现对他们的名字进行了字典序排序,GROUP_CONCAT还有一个功能就是更改分隔符,它默认的分隔符是“,”。

SELECT job_id, GROUP_CONCAT(DISTINCT name ORDER BY name DESC SEPARATOR "-") name 
FROM staff GROUP BY job_id;

在这里插入图片描述
  到这里就全部将GROUP_CONCAT函数说完了,欢迎大家批评指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

收藏!最新大数据产业地图 十大生态金矿百大公司起底【附下载】

来源:智东西人工智能的崛起,加速了大数据技术的应用落地。据中国大数据产业生态联盟调查显示,国内大数据企业年营业额4000万人民币以上的已经超过40%,这意味着,这些企业已经度过生存期,开始进入应用落地和品…

【一鸣离职,左晖去世】互联网老兵给大家的三个建议

2021年5月20日,除了娱乐圈的分分合合,互联网圈发生了两件大事: 1、字节跳动创始人张一鸣发布内部全员信,宣布卸任CEO一职。 2、贝壳发布讣告,公司创始人兼董事长左晖先生因疾病意外恶化于2021年5月20日…

MySQL流浪记(七)—— MySQL删除表数据

删除全表数据: delete from [表名]:会生成日志   truncate table [表名]:不会生成日志 删除表中部分数据 delete from [表名] where … :删除表中的部分数据只能使用delete where 不能使用truncate。 区别 从效果上看&#x…

Android布局

1. xml: 静态、较确定; 2. view:runtime动态改变; 3. Adapter:把datasource绑定到AdapterView的子类;如:从array获取数据,convert每项data为一个可以加到AdapterView layout 中的view&#xff1…

科大讯飞:让世界听见AI的声音

来源:华为怀揣着“让世界聆听我们的声音”的梦想,科大讯飞依托世界领先的核心技术,引领智能浪潮,服务亿万用户,从中国语音产业的拓荒者一跃成为世界人工智能产业的领军者,而最初科大讯飞把语音作为切入点却…

Linux中的chmod详解

chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令。Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。只有…

hdu 3999The order of a Tree

题目地址&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid3999 本题为简单二叉排序树&#xff0c;先按排序树创建树&#xff0c;然后先序遍历二叉树&#xff0c;输出的时候最后一个数字后面没有空格。 数组实现&#xff1a; #include<stdio.h> #include<strin…

【程序员薪资】2021年04月新鲜出炉,看看你拖后腿了吗?

程序员一直都是一个备受人们关注的群体。据IDC统计&#xff0c;全球约有1850万名程序员&#xff08;数据还在持续增长&#xff09;&#xff0c;中国占10%左右。随着近年全国互联网创业热潮的兴起&#xff0c;“互联网”、“云计算”以及“智能硬件”等领域发展迅速&#xff0c;…

CICC科普栏目|神经网络浅讲:从神经元到深度学习

图1 人脑神经网络来源&#xff1a; 计算机的潜意识摘要&#xff1a;神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向–深度学习的基础。神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向–深度学习的基础。学习神经网络不仅可以让你掌握一门强大的…

linux安装Redis(超详细,只要三分钟,每一步命令都有命令截图及运行截图)

Redis redis是一个key-value存储系统。和Memcached类似&#xff0c;它支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash&#xff08;哈希类型&#xff09;。这些数据类型都支持push/pop、add/remove及取…

鬼才!用Python计算圆周率 π

目录 一、圆周率的历史发展 1、中国 2、印度 3、欧洲 二、用python计算圆周率 A货&#xff1a;什么&#xff01;你不会背圆周率&#xff08;鄙夷的眼神&#xff09; 3.1415926535 8979323846 26433... 桥哥&#xff1a;我会算呀 &#xff01;&#xff01;&#xff01; 一…

一个简单WCF项目的建立 by wsz

由于搬砖的需要&#xff0c;不得不学一点与WCF有关的东西。具体是因为前几周在64位环境下写的一个dll不能被集成到合作伙伴的32位工程中&#xff0c;但是要修改文件实在是划不来&#xff0c;一个压缩后600M的文件搬来搬去的也是让人蛋碎。因此想到了WCF。这样只要提供一个servi…

大数据常见问题:数据倾斜

offer收割系列介绍&#xff1a; 1、分享桥哥本人或小伙伴在面试大厂时遇到的真题&#xff0c;并给出参考答案&#xff01;&#xff01;如果能帮到大家&#xff0c;点赞、收藏、评论是对我最大的支持&#xff01;&#xff01; 2、涉及岗位&#xff1a;主要为大数据开发、数据仓…

一图看懂新一代人工智能知识体系大全

来源&#xff1a;财经头条摘要&#xff1a;人工智能的发展离不开基础支持层和技术层&#xff0c;基础支持层包括大数据、计算力和算法&#xff1b;技术层包括计算机视觉、语音识别和自然语言处理。人工智能的技术本质是什么&#xff0c;本文会详细分析。人工智能的发展离不开基…

Redis是单线程为什么还那么快?

Redis为什么还那么快 基于内存   Redis完全基于内存&#xff0c;绝大部分请求是纯粹的内存操作&#xff0c;Redis将数据存储在内存中&#xff0c;读写数据的时候不会受到硬盘I/O速度的限制&#xff08;内存速度为什么比硬盘快&#xff1f;&#xff09;&#xff0c;类似于Hash…

iPhone是否越狱的检测方法

今天项目中要用到检查iPhone是否越狱的方法。 Umeng统计的Mobclick.h里面已经包含了越狱检测的代码&#xff0c;可以直接使用 /*方法名:* isJailbroken*介绍:* 类方法&#xff0c;判断设备是否越狱&#xff0c;判断方法根据 apt和Cydia.app的path来判断*参数说明…

阿里、字节offer收割系列:数据仓库岗(面试真题,建议收藏)

【offer收割系列介绍】 1、分享桥哥本人或小伙伴在面试大厂时遇到的真题&#xff0c;并给出参考答案&#xff01;&#xff01; 2、涉及岗位&#xff1a;主要为大数据开发、数据仓库&#xff08;桥哥干过的&#xff09;&#xff0c;其它岗位也可参考 3、涵盖技术&#xff1a;mys…

MIT新开发的 AI 模型有望改进恶性脑瘤治疗

来源&#xff1a;人工智能和大数据美国研究人员新近开发出一种人工智能模型&#xff0c;能够为胶质母细胞瘤患者设计出最小剂量给药方案&#xff0c;在缩小肿瘤的同时减少药物带来的毒副作用&#xff0c;改进患者生活质量。胶质母细胞瘤是一种常见的恶性脑瘤&#xff0c;常见疗…

git远程分支修改名字

本地分支重命名(还没有推送到远程) git branch -m oldName newName远程分支重命名 重命名远程分支对应的本地分支 git branch -m oldName newName删除远程分支 git push --delete origin oldName上传新命名的本地分支 git push origin newName把修改后的本地分支与远程分支关联…

30款顶级CSS工具及应用-CSDN.NET

30款顶级CSS工具及应用-CSDN.NET. 第3个CSS3PS尤其令惊艳&#xff01;&#xff01;&#xff01;非常强大的效果&#xff0c;无需安装&#xff0c;直接photoshop弄好&#xff0c;文件——脚本——选择pscss3——再用chrome打开即可&#xff01; 转载于:https://www.cnblogs.com…