前言

作者目前是这么理解这个问题,如果有更好的想法,可在评论区留言。对于合并,要么是子连接(相对于一张表),又或者是多张表(可使用左连接或者右连接),当然这很常用。所以在使用前,必须先搞懂左右连接以及自连接,这样才能更简单理解。那我们开始,如上想要将id相同的字段合并,怎么合并?合并之后又是为了得到什么样的结果?为什么要用这个?三个问题,首先来说第二个,如果只涉及一张表,那就是减少冗余的字段,并将相同的字段(例如:N个id相等)下的某个字段进行拼接,使之看似是一个数组,实则就是一个字段中有多条数据,只不过中间看用什么连接(例如:什么标点符号),多表之间同样也可以这么理解,大概的理解就这么多了,具体还是得看项目中的需求。正所谓,需求看着看着逻辑慢慢就出来了。让我们来看看基于不同数据库之间的字段拼接方法

基于sql server:

 select name,stuff((select ','+PatrolContent  from  ss_SPRDwhere c.ID=ID  for xml path('')),1,1,'') as PatrolContentNew  from ss_SPRD  a   group by  a.ss_SPRD  ..............(其中若sql server中报出某处"."附近有语法错误或者是关键字"for"附近有语法错误,有这个错误直接删除for xml path(''))

其中这个里面涉及到了sql server 中的stuff函数
STUFF ( character_expression , start , length ,character_expression )
它的作用是:删除指定长度的字符,并在指定的起点处插入另一组字符
其中里面各个参数的含义分别是:
参数——character_expression ——(一个字符数据表达式。character_expression 可以是常量、变量,也可以是字符列或二进制数据列)
start——(一个整数值,指定删除和插入的开始位置。如果 start 或 length 为负,则返回空字符串。如果 start 比第一个 character_expression 长,则返回空字符串。start 可以是 bigint 类型)

length ——(一个整数,指定要删除的字符数。如果 length 比第一个 character_expression 长,则最多删除到最后一个 character_expression 中的最后一个字符。length 可以是 bigint 类型)

返回类型——(如果 character_expression 是受支持的字符数据类型,则返回字符数据。如果 character_expression 是一个受支持的 binary 数据类型,则返回二进制数据)

sql server目前只了解到了这一个函数

mysql

对于mysql因这次没有没到,为了下次方便这里附上一段一位csdn笔者的mysq拼接内容
1.符号 +
在MySQL中也支持使用加号拼接结果,但是它的运行结果与MySQL中的运行结果有所不同。在两个字段都是整型时,MySQL与Sql Server运行结果相同,都会返回两个整型值得和,但是在两个字段中有一个为字符串时,MySQL的返回结果不是拼接两字符串,而是默认字符串为零,再返回两个字段之和

//返回90
select Name + Score1 where ID = 1 ;

如上所示,因为Name字段不是整型,所以相当于Score1 + 0,所以返回值就是Score1的值,即90;另外,如果相加的两个字段全都是字符串,则返回0。

2.CONCAT
CONTACT的功能是直接将数据按照字符串格式拼接,类似于Sql Server中加号拼接字符串的功能。

//与Sql Server中的"+"类似
select CONCAT(ID,Name,Score1) from MyTable where ID = 1;
//返回值为 1A90;

在这里需要注意的是,CONCAT后面括号中的参数只要有一个值为null,整个函数的返回值就会为null。

3.CONCAT_WS
CONOCAT_WS的用法和前者类似,但是它的第一个参数为分隔符,在返回的值中,每一个参数之间都会有第一个参数作为分隔。

select CONCAT_WS('-',ID,Name,Score1) from MyTable where ID = 1;
//返回值为 1-A-90;

如果CONCAT_WS的第一个参数为null,则返回值为null,如果后面的参数中有null,则这些参数会被忽略,只返回其他参数和分隔符组成的字符串。
4.根据字段拼接 GROUP_CONTACT
在我们使用数据库时,会碰到这样一种情况:同一个Name的人有两条数据,但是他们的其他数据并不相同,而我们所需要的是同一个Name的人的Score1集合,即需要获得Name为A的所有的Score1并且希望将其拼接为一个字段,这里我们就需要用到GROUP_CONCAT。

函数语法如下:group_concat( 要连接的字段 )  [Order BY 排序字段 ASC/DESC]   [Separator '分隔符']
select Name,GROUP_CONCAT(Score1 Separator '-') FROM MyTable GROUP BY Name;

其中GROUP BY 后面的字段是Name,所有同一排序字段的数据会被拼接后存入同一字段中,并以相应的分隔符分分隔。

后面再添加一个5.字段后加上 ||

select id, sex||‘abc' from user

注意:每一个数据库所拥有的函数不一样,什么数据库应对应什么函数,不要跳跃的去用

将Id相同的字段合并,并且以逗号隔开 (mysql、sql server)相关推荐

  1. MySQL/SQL Server 将Id相同的字段合并,并且以逗号隔开

    SQL Server的方法: STUFF ( character_expression , start , length ,character_expression ) 参数 character_ex ...

  2. oracle根据相同字段拼接另外不同字段数据,用逗号隔开。

    table为表名,id为相同字段,name为不同字段 select id, ltrim(sys_connect_by_path(name, ','), ',') name from (select i ...

  3. SQL语句将某字段查询出以逗号隔开

    MySQL的sql语句有好多能够省去server端的复杂处理 1.group_concat 这玩意儿能够实现  将一个字段如id查询出来   成为这种格式:121,122,123,124,125,12 ...

  4. [翻译]一步步教你配置SQL SERVER合并复制(五)配置Publisher(上)

    上一篇:一步步教你配置 SQL SERVER合并复制(四)设置Distributor的安全 (译者注:本篇内容较多也是合并复制最重要的一个环节之一,因此配置Publisher将分成两个章节来翻译)   ...

  5. SQL Server 2008 R2——使用数字辅助表(master..spt_values)实现用计数字段对记录进行重复显示...

    SQL Server 2008 R2--使用数字辅助表(master..spt_values)实现用计数字段对记录进行重复显示 原文:SQL Server 2008 R2--使用数字辅助表(maste ...

  6. Linux上SQL Server合并复制

    Replication is a process to manage multiple copies of the same data at a different node. Microsoft S ...

  7. 【2 - 数据库是如何存储数据的】Sql Server - 郝斌(字段、记录、表;图形化界面及sql语句建表;六种约束;一对一、一对多、多对多、数据库关系图;主外键)

    课程地址:数据库 SQLServer 视频教程全集(99P)| 22 小时从入门到精通_哔哩哔哩_bilibili 目录 数据库是如何解决数据存储问题的 1. 表的相关数据 2. create tab ...

  8. 使用SQL Server 获取插入记录后的ID(自动编号)

    使用SQL Server 获取插入记录后的ID(自动编号) jingxian 本篇文章是对使用SQL Server获取插入记录后的ID(自动编号)的方法进行了详细的分析介绍,需要的朋友参考下 最近在开 ...

  9. 使用SQL Server 获取插入记录后的自增ID(自动编号)

    http://www.jb51.net/article/39029.htm 本篇文章是对使用SQL Server获取插入记录后的ID(自动编号)的方法进行了详细的分析介绍,需要的朋友参考下 最近在开发 ...

最新文章

  1. 不限制内存用桶排序PHP
  2. win7_oracle11g_64位连接32位PLSQL_Developer
  3. 软件工程电商系统数据库定义_某个电子商务系统项目的数据库设计
  4. 自然数,实数,有理数,整数,分数,无理数
  5. OpenCV中基本数据结构(2)_Scalar
  6. Linux获得命令帮助(学习笔记五)
  7. hibernate Restrictions 用法 查询
  8. 百度 图片文字识别 Python版本
  9. mysql 连接 110 超时_Nginx和mysql上行超时超时(110:连接超时)
  10. $_server[#039;php_auth_user#039;],ecshop中$user ($GLOBALS[#039;user#039;])对象在哪里定义的...
  11. 【BZOJ】【1045/1465】【HAOI2008】糖果传递
  12. 蓝桥杯 ADV-157算法提高 现代诗如蚯蚓
  13. 一个请求里能有多个cookie吗_从一个男人对女人家人的态度里,能看出他有多爱对方吗?...
  14. android手机投影到电视软件下载,安卓手机怎么投屏到电视?这两种方法最简单!...
  15. 1分钟激活任意Windows 系统
  16. 记录手机app的使用时长
  17. MLY -- 9.Optimizing and satisficing metrics
  18. 【微信】一、微信开发环境
  19. 内行人看鸿蒙系统,如何看待华为终端2020年全线搭载鸿蒙系统?内行人“一语道破”...
  20. gethostbyname, gethostbyaddr(原来百度叫shifen 十分?)

热门文章

  1. fossa介绍和使用
  2. h700通话糊 索尼wi_索尼 WI-H700 无线耳机评测:随心享受一耳朵好声音
  3. 华创-IDG天使基金三期发布 顶级VC联投
  4. VUE3+TS 引入JQuery
  5. 小程序页面跳转使用reLaunch遇到的坑
  6. 为建筑、土木工程、交通运输、工厂设计、各式的生产
  7. 三星s9 android p内测,官方:S9/S9+/Note9国行版喜提Android 10内测体验
  8. 决战燕京城-01 执剑的少年(一)
  9. 红米NOTE拆机视屏 红米NOTE换总成
  10. SpringBoot自定义redis配置