我的需求是要把项目中区域表(sys_area)中的区域名称查出来组合到一起并且用-分隔:
mysql实现:
select GROUP_CONCAT(a.name order by a.type SEPARATOR '-') as name
FROM sys_area a WHERE a.id in('0','1','2','8','61','136','215')
Oracle实现:
select LISTAGG(to_char(a.name), '-') WITHIN GROUP (ORDER BY a.type) as name
FROM sys_area a WHERE a.id in('0','1','2','8','61','136','215')
查询结果:
注:sql中的order by 可以指定排序字段,但经测试发现这里的排序字段不能与where 条件里的字段用同一个,否则排序会错乱,暂时还原因不明,有知道原因的大佬还望留言赐教。