按照某字段进行分组,并把其中一列的值合并显示在一个字段中。这里用一个实例说明,主要语法为:listagg within group
1、建表 \ 插入 测试 数据
create table DEMO ( id NUMBER, name VARCHAR2(20), nums NUMBER ); insert into demo values(1, '苹果', 1000); insert into demo values(1, '鸭梨', 2000); insert into demo values(1, '香蕉', 4000); insert into demo values(2, '橘子', 5000); insert into demo values(3, '西瓜', 3000); insert into demo values(4, '葡萄', 3500); insert into demo values(5, '芒果', 4200); insert into demo values(5, '哈密', 5500);
2、分组合并查询sql
将NAME之间以 逗号 连接 , 并且按照ID分类。
SELECT ID, listagg(NAME, ',') within group(ORDER BY ID) AS NAMES FROM DEMO T GROUP BY ID;
以上是Oracle的逻辑,下面提一下MySQL的逻辑,效果跟Oracle一样,只是函数有区别。
---MySQL效果(默认分隔符为",") SELECT ineid, group_concat(VCNENAME) FROM tneinfo T GROUP BY ineid; ---MySQL效果,可以自定义分隔符 SELECT ineid, group_concat(VCNENAME,'|') FROM tneinfo T GROUP BY ineid;
是不是很简单,希望对你有用,点击收藏关注,有数据库相关请问题留言,我会尽量回复大家。