mysql group by后 拼接某一字段

SQL> select * from tmp10;

JS    ND JM
--------- ----- --------------------------------------------------
       10  2006 DAQING01
       20  2007 DAQIN03
       30  2006 SHENGLI01
       40  2007 KELAMAYI01

SQL> 
SQL> SELECT ND,
  2         sum(JS) sum_js,
  3         MAX(LTRIM(SYS_CONNECT_BY_PATH(JM, ‘,‘), ‘,‘)) sum_jm
  4    FROM (SELECT ND,
  5                 JS,
  6                 JM,
  7                 ROW_NUMBER() OVER(PARTITION BY ND ORDER BY JS) RN
  8            FROM tmp10)
  9   START WITH RN = 1
10  CONNECT BY PRIOR RN + 1 = RN  AND PRIOR ND = ND
11   GROUP BY ND;

ND     SUM_JS SUM_JM
----- ---------- --------------------------------------------------------------------------------
2006         40 DAQING01,SHENGLI01
2007         60 DAQIN03,KELAMAYI01

SQL>

来自:http://www.itpub.net/thread-884474-1-1.html

后来才发现mysql中有GROUP_CONCAT()这个函数。。。

时间: 2024-11-10 10:34:36

mysql group by后 拼接某一字段的相关文章

MySQL 对分组后的同类数据进行拼接字符串

MySQL 对分组后的同类数据进行拼接字符串 写后台方法时遇到个问题,需要将表内同一订单号的操作记录流水进行简单拼接输出,不想取出来再操作,找了个mysql的方法直接操作 group_concat对组内的每一行数据拼接,内部可以排序.使用separator 进行分割 concat_ws对一行内的各个字段进行拼接,第一项指定分隔符,后续的有null会忽略 select oid, group_concat(concat_ws('|',atime,(select `level` from prizes

Mysql 升级到 5.6 后插入语句时间字段报错:Incorrect datetime value: '' for column 'createtime'

今天部署服务器项目运行,当遇见有时间数据对象的插入和更新操作的时候,就报错,如下: Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'createtime' at row 1 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2868) at com.mysql.jdbc.My

mysql group by 对多个字段进行分组

mysql group by 对多个字段进行分组 group by X 意思是将所有具有相同X字段值的记录放到一个分组里. 那么group by  X, Y呢? group by X, Y意思是将所有具有相同X字段值和Y字段值的记录放到一个分组里. 原文地址:https://www.cnblogs.com/beiyi888/p/9623257.html

Mysql group by,order by,dinstict优化

1.order by优化 实现方式: 1. 根据索引字段排序,利用索引取出的数据已经是排好序的,直接返回给客户端: 2. 没有用到索引,将取出的数据进行一次排序操作后返回给客户端. 1 EXPLAIN SELECT m.id,m.subject,c.content FROM group_message m,group_message_content c WHERE m.group_id = 1 AND m.id = c.group_msg_id ORDER BY m.user_id\G; opt

MySQL group replication介绍

"MySQL group replication" group replication是MySQL官方开发的一个开源插件,是实现MySQL高可用集群的一个工具.第一个GA版本正式发布于MySQL5.7.17中:想要使用group replication只需要从官网上下载MySQL5.7.17及以后的版本即可 group replication发布以后,有3种方法来实现MySQL的高可用集群: ①:异步复制 ②:半同步复制 ③:group replication ---注意: 异步复制是

MySQL Group Replication调研剖析

一.MySQL复制的三种模式 MySQL当前存在的三种复制模式有:异步模式.半同步模式和组复制模式,先了解一下三种模式的工作方式. 1.MySQL Asynchronous Replication(异步复制) 异步复制是MySQL最早的也是当前使用最多的复制模式,异步复制提供了一种简单的主-从复制方法,包含一个主库(master)和备库(一个,或者多个)之间,主库执行并提交了事务,在这之后(因此才称之为异步),这些事务才在从库上重新执行一遍(基于statement)或者变更数据内容(基于row)

mysql高效获取两张表共同字段的交集数据

问题: 例如下面两站表A,B.A表和B表分别有5-10w数据.A表结构如下:id bid name title publisher extraB表结构如下id bid name title publisher A出版社也为很多人出版了书籍,B出版社也为很多人出版了书籍,有sql语句找出这两个出版社为那些人 共同出版书籍,用innerjoin太慢,有没有什么更好的办法? 解答一: 由于不知道你表的索引情况,至于用join还是in和exists不太好说,理论上讲,exists最快.in次之.join

mysql Group By

1.概述 “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理. 2.原始表 3.简单Group By 示例1 select 类别, sum(数量) as 数量之和 from A group by 类别 返回结果如下表,实际上就是分类汇总. 4.Group By 和 Order By 示例2 select 类别, sum(数量) AS 数量之和 from A group by 类别

mysql插入数据后返回自增ID的方法

mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得到这个自增id的值呢? 方法一:是使用last_insert_id mysql> SELECT LAST_INSERT_ID(); 产生的ID 每次连接后保存在服务器中.这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_INCREMENT列的最新语句第一个 AUTO_INCREMEN