码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • concat() 、concat_ws()和group_concat()


    concat() 、concat_ws()和group_concat()

    1.1 区别

    concat、concat_ws和group_concat都是在sql语句中做拼接使用的,但是三者使用的方式不尽相同,concat是针对行数据做的拼接;concat_ws和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符;group_concat是针对列做的数据拼接,且group_concat自动生成逗号。

    1.2 concat()函数

    功能:将多个字符串连接成一个字符串,concat是针对以行数据做的拼接
    语法:concat(str1, str2,…)
    注意:返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。

    1.2.1 建表sql

    CREATE TABLE Employee(
    id int,
    name VARCHAR(20),
    birthday datetime
    )engine myisam charset utf8;
    
    insert into Employee 
    values(1,'李四', '2001-12-20'), (2,'张三', '2019-6-6'), (3,'王二', '1996-3-23'), (4,'皮卡丘', NULL);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    **SELECT * FROM Employee**
    image.png
    **SELECT CONCAT(id, name, birthday) FROM Employee**
    image.png

    1.3 concat_ws()函数

    功能:和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符(concat_ws就是concat with separator)
    语法:concat_ws(separator, str1, str2, …)
    注意:第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。
    sql和数据同上

    **SELECT CONCAT_WS(',',id, name, birthday) FROM Employee**
    image.png

    **SELECT CONCAT_WS(NULL,id, name, birthday) FROM Employee**
    image.png

    1.4 group_concat()函数

    功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果(group_concat是针对列做的数据拼接,且group_concat自动生成逗号)。
    语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )
    说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。

    1.4.1 建表sql

    create TABLE GroupConcatTest(
    	id int,
    	score int
    )engine myisam charset utf8;
    
    insert into GroupConcatTest 
    values(1,10),(1,20),(1,20),(2,40),(3,20),(3,40),(3,50),(4, NULL);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    **SELECT * FROM GroupConcatTest**
    image.png

    • 需求1:每个id为一行,且每行显示该id所有分数
    SELECT
    	id,
    	GROUP_CONCAT( score ) 
    FROM
    	GroupConcatTest 
    GROUP BY
    	id
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image.png

    • 需求2:每个id为一行 每行显示该id所有不重复的分数
    SELECT
    	id,
    	GROUP_CONCAT( DISTINCT score ) 
    FROM
    	GroupConcatTest 
    GROUP BY
    	id
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image.png

    • 需求3:每个id为一行 每行显示该id所有不重复的分数且按照由高到低排序
    SELECT
    	id,
    	GROUP_CONCAT( DISTINCT score ORDER BY score DESC ) 
    FROM
    	GroupConcatTest 
    GROUP BY
    	id
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image.png

    • 需求4:每个id为一行 每行显示该id所有不重复的分数、按照由高到低排序,并以’;'隔开
    SELECT
    	id,
    	GROUP_CONCAT( DISTINCT score ORDER BY score DESC SEPARATOR ';' ) 
    FROM
    	GroupConcatTest 
    GROUP BY
    	id
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image.png

    参考:

    1. https://blog.csdn.net/qq_35531549/article/details/90383022?ops_request_misc=&request_id=&biz_id=102&utm_term=sql%20group_concat%E5%87%BD%E6%95%B0%E7%94%A8%E6%B3%95&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2-90383022.142v59pc_rank_34_1,201v3add_ask&spm=1018.2226.3001.4187
  • 相关阅读:
    ILRuntime使用指南
    统一身份认证实现,推广的可能性及优缺点?
    信创环境下Nginx正向代理实现内网发送邮件
    vue v-model
    LeetCode[105]从前序与中序遍历序列构造二叉树
    打卡第 2 天: urllib简记
    TypeScript 基础教程,适合新手
    基于VB6的颜色取色器 - 开源研究系列文章 - 个人小作品
    Vue-router基础知识(上)
    PHP上网网址电影视频导航网站设计
  • 原文地址:https://blog.csdn.net/hansome_hong/article/details/127432860
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号