sql中的group_concat 和 oracle中的wm_concat

10 篇文章 0 订阅

mysql中sql语句中常见的group_concat()函数意思以及用法,oracle中与其一样的功能函数是wm_concat()

1、group_concat()

手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果。比较抽象,难以理解。

通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函数参数(就是字段名)决定。分组必须有个标准,就是根据group by指定的列进行分组。

例子:


-- 创建一个计划表
drop table if exists plan ;
create table plan (
    id int PRIMARY key,
    name varchar(255)
);


-- 创建一个计划明细表,是计划表的子表
drop table if exists  planDetail;
create table planDetail(
    id int PRIMARY key,
    name varchar(255),
    state int,
    planId int

);


-- 插入数据
insert into plan values(1,'计划一');
insert into plan values(2,'计划二');
insert into plan values(3,'计划三');

insert into planDetail values(1,'明细一',0,1);
insert into planDetail values(2,'明细2',1,1);
insert into planDetail values(3,'明细3',1,1);

insert into planDetail values(4,'明细一',0,2);
insert into planDetail values(5,'明细2',0,2);
insert into planDetail values(6,'明细3',1,2);

insert into planDetail values(7,'明细一',1,3);
insert into planDetail values(8,'明细2',1,3);
insert into planDetail values(9,'明细3',1,3);

现在要查询每条计划的所有明细的name,就可以使用group_concat()

select t1.name ,group_concat(t2.name) from plan t1 
LEFT JOIN planDetail t2 on T1.id = T2.planid
GROUP BY T1.name

2、wm_concat()

oracle中与其一样的功能函数是wmsys.wm_concat()也要配合分组查询group by使用;不使用group by会报错

select t1.name ,wm_concat(t2.name) from plan t1 
LEFT JOIN planDetail t2 on T1.id = T2.planid
GROUP BY T1.name
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值