mysql 类似wm concat_oracle的wm_concat()和mysql的group_concat()合并同列变成一行的用法以及和concat()合并不同列的区别...

前言

标题几乎已经说的很清楚了,在oracle中,concat()函数和 “ || ” 这个的作用是一样的,是将不同列拼接在一起;那么wm_concat()是将同属于一个组的(group by)同一个字段拼接在一起变成一行。mysql是一样的,只不过mysql用的是group_concat()这个函数,用法是一样的,这里就不过多介绍了。大家可以直接戳这篇文章 了解 浅析MySQL中concat以及group_concat的使用

这里我就以oracle介绍为主了,mysql同样的方法使用,就是换一个函数就是了。

wm_concat()和concat()具体的区别

oracle中concat()的使用 和 oracle中  “ || ” 的使用

这两个都是拼接字段或者拼接字符串的功能。

oracle中:

concat只能连接两个字符串或者两个字段,|| 可以多次使用,拼接n个字符串或者字段。

select concat('aaa','bbb') from dual /*结果为:aaabbb*/

select 'aaa'||'bbb'||'ccc'||'ddd' from dual /*结果为:aaabbbcccddd*/

如果concat()拼接多个话,就会报错,

6535eccb0364ed6638dc7db89a3ba3e0.png

mysql中

concat()的使用,是可以连接多个字符串或者字段的。

select concat('aaa','bbb','ccc','ddd') from dual /*mysql中执行 结果为:aaabbbcccddd*/

wm_concat()的使用

我看了大多数博客对wm_concat()这个个函数的介绍,我觉得都介绍的不是很完美,他们都是简单的说 这个是合并列的函数,但是我总结的概括为:把同组的同列字段合并变为一行(会自动以逗号分隔)。什么意思呢,举个例子呗。

现在我有一张成绩表,如图,

stuid 同学学号         coursename 课程名称            score 课程成绩

说明一下,设计成绩表的时候,这里的coursename最好是设计成courseid,和课程表去关联,但是这里我就是测试,为了更简单的表达效果,所以这里暂时就以课程名称来设计了,希望大神不要喷我设计的表有问题哈,我数据库设计表也还是挺厉害的勒,嘿嘿,自恋一下。

2bc7e8e42a42970db148b36e95154558.png

问题:现在要将同一个同学的所有课程成绩以一行展示,sql怎么写呢?

/*简单的合并同一个同学的课程*/

select stuid,wm_concat(coursename)

from stu_score

group by stuid

91b0b46a90a0a6724cf835c4aea7674e.png

我们再优化一下SQL,将成绩也放进去

/*同一个同学的课程+成绩*/

select stuid,wm_concat(coursename || '(' || score||')')

from stu_score

group by stuid

925cff454a662c2e66bd2d02d371bbda.png

如果不想用逗号分隔,可以用replace函数替换逗号为你想要的分隔符号,

/*同一个同学的课程+成绩,指定想要的分隔符*/

select stuid,replace(wm_concat(coursename || '(' || score||')'),',','---')

from stu_score

group by stuid

8933168feb1739a816cb148cea4e0349.png

mysql是一样的用法,把wm_concat 换成 group_concat()就可以啦,具体可以参考这篇文章的使用:浅析MySQL中concat以及group_concat的使用

不知道大家学会这个wm_concat()这个函数的用法了吗

参考文章:

感谢原作者的分享,让技术人能够更快的解决问题

本文分享 CSDN - 小小鱼儿小小林。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

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

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

相关文章

试图将驱动程序添加到存储区_基于容器的块存储使用

什么是块存储?分布式存储系统,为业务与数据在集群内漂移提供了自由保障,满足企业对于不受约束的系统环境要求。同时,平台仅保存迁移被改动的数据,而非整体增加数据量,实现增量备份。魔方云块存储的功能&…

如何编译和运行C++程序?

C 和C语言类似,也要经过编译和链接后才能运行。那么C是如何运行的呢,C和C的运行步骤是一样的。我们需要留意的是C源文件的后缀,以及GCC 中的g命令。 下图是 C/C 代码生成可执行文件的过程: C源文件的后缀 C语言源文件的后缀非…

堆排序java实例_堆排序(示例代码)

前言:网上有很多堆排序的案例,我只想写自己堆排序。一:堆结构即:一个父节点最多只能有两个子节点(可以没有),如下图图1图2图3 图4二: 数组与堆结构转换假设已知堆数组 int[] a {9,7,6,4,5,1,3,2,} 则相…

python 生成图片_python生成带有表格的图片

因为工作中需要,需要生成一个带表格的图片例如:直接在html中写一个table标签,然后单独把表格部分保存成图片或者是直接将excel中的内容保存成一个图片刚开始的思路,是直接生成一个带有table标签的html文件,然后将这个文…

wpf xaml突然不能自动补齐代码_Xaml+C#桌面客户端跨平台初体验

(给DotNet加星标,提升.Net技能)转自:大头BigHeadcnblogs.com/Big-Head/p/12614118.html前言随着 .NET 5的到来,微软在 .NET跨平台路上又开始了一个更高的起点。回顾.NET Core近几年的成果,可谓是让.NET重生了一次.ASP .NET Core跨…

vc6.0mfc中单选按钮如何分组_按钮系列02-搞定按钮和选框的14个秘诀

UI 界面当中,各种开关、按钮、选框控件是非常常见的组件,它们看起来不复杂,但是在实际使用的时候讲究非常之多,它们不仅关乎体验,而且涉及到一些界面逻辑问题。英文中的 「Toggle」一词,对应的是带有短柄的…

java某个类避免findbug检查_Findbug插件静态java代码扫描工具使用

本文转自http://blog.csdn.net/gaofuqi/article/details/22679609 感谢作者FindBugs 是由马里兰大学提供的一款开源 Java静态代码分析工具。FindBugs通过检查类文件或 JAR文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。FindBu…

4乘4方格走的路线_苏州周边4个冷门自驾游路线景点推荐

1.崇明东滩崇明东滩湿地公园有两大看点,一是看候鸟迁徙,二是看日出和星空。东滩湿地滩涂辽阔,低头是大片的芦苇,抬头是满天斑斓的云彩,顺着木栈道走在公园内,如与大自然融为一体,可360度将美景收…

Spring体系结构详解

Spring 框架采用分层架构,根据不同的功能被划分成了多个模块,这些模块大体可分为 Data Access/Integration、Web、AOP、Aspects、Messaging、Instrumentation、Core Container 和 Test。 Spring的体系结构如下图所示 图中包含了 Spring 框架的所有模块…

java对外查询接口注意的地方_Java接口注意点

1、接口可以多实现:一个实现类可以同时实现多个接口package com.qf.demo02_interface;//定义一种规则:interface A{public void testA();//public void fun();}//定义另一种规则interface B{public void testB();public void fun();}//实现类&#xff0c…

Spring目录结构和基础JAR包介绍

目前 Spring 框架的最新版本是 5.1.8,本教程是基于 Spring 的稳定版本 3.2.13 进行讲解的。读者可以通过网址 http://repo.spring.io/simple/libs-release-local/org/springframework/spring/ 下载名称为 springframework-3.2.13.RELEASE-dist.zip 的压缩包。单击此…

自定义依赖注解无效_SpringValidation用注解代替代码参数校验解析

Spring Validation概念在原先的编码中,我们如果要验证前端传递的参数,一般是在接受到传递过来的参数后,手动在代码中做 if-else 判断,这种编码方式会带来大量冗余代码,十分的不优雅。因此,推出了用注解的方…

mysql开源许可_为什么开源数据库改变许可证?

CockroachDB 是一个开源的分布式数据库,最近改变了代码授权,放弃了 Apache 许可证。一、CockroachDB 的许可证变更CockroachDB 以前的许可证是 Apache,代码托管在 GitHub,任何人都可以访问。现在的许可证改成了"商业源码许可…

Spring 依赖注入的实现

依赖注入(Dependency Injection,DI)和控制反转含义相同,它们是从两个角度描述的同一个概念。 当某个 Java 实例需要另一个 Java 实例时,传统的方法是由调用者创建被调用者的实例(例如,使用 new…

java 静态对象语法_04.Java 语法

计算机基础知识表达式(expression):Java中最基本的一个运算。比如一个加法运算表达式。12是一个表达式,ab也是。计算机内存的最小存储单元是字节(byte),一个字节就是一个8位二进制数,即8个bit。它的二进制表示范围从00000000~1111…

Spring实例化Bean

在面向对象的程序中,要想调用某个类的成员方法,就需要先实例化该类的对象。在 Spring 中,实例化 Bean 有三种方式,分别是构造器实例化、静态工厂方式实例化和实例工厂方式实例化。 构造器实例化 构造器实例化是指 Spring 容器通…

Spring基于XML装配Bean

Bean 的装配可以理解为依赖关系注入,Bean 的装配方式也就是 Bean 的依赖注入方式。Spring 容器支持多种形式的 Bean 的装配方式,如基于 XML 的 Bean 装配、基于 Annotation 的 Bean 装配和自动装配等。 Spring 基于 XML 的装配通常采用两种实现方式&…

苹果php环境,苹果电脑安装PHP环境步骤-PHP问题

苹果电脑装置PHP环境步骤:一、起首咱们需求装置Homebrew二、终端输出饬令// 创立目次,假如你不创立过该目次sudo mkdir /usr/local/varsudo chmod 777 /usr/local/var//修正成你本人的用户名以及组,假如你不创立过该目次sudo mkdir /usr/local/sbin/sudo chown -R :…

Spring基于Annotation装配Bean

在 Spring 中,尽管使用 XML 配置文件可以实现 Bean 的装配工作,但如果应用中 Bean 的数量较多,会导致 XML 配置文件过于臃肿,从而给维护和升级带来一定的困难。 Java 从 JDK 5.0 以后,提供了 Annotation(注…

swiper鼠标hover停止自动轮播_swiper滑块组件

相信大家在平常购物的时候都会看到轮播图,轮播图里面播放的是热门商品的信息。在小程序里面我们可以通过swiper滑动视图容器组件来实现,让我们一起来看下swiper组件都有哪些属性:我们看到可以通过一些属性给视图容器增加一些指示点&#xff0…