首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与SQL (GROUP_CONCAT in MySSQL / LISTAGG在Oracle中)的等效函数

与SQL (GROUP_CONCAT in MySSQL / LISTAGG在Oracle中)的等效函数
EN

Stack Overflow用户
提问于 2014-10-29 16:14:20
回答 1查看 6.1K关注 0票数 9

有人知道Firebird 2.5是否有一个类似于SQL中的"STUFF“函数的函数吗?

我有一个包含父用户记录的表,还有一个包含与父用户记录相关的子用户记录的表。我希望能够提取用户拥有的“角色”的逗号分隔字符串,而不必使用第二个查询,循环为给定ID返回的值,并自己创建字符串。

我找过任何其他相关的问题,但没有找到任何问题。这个链接string equivalent of Sum to concatenate中的问题基本上也是我想要做的,但是使用FireBird2.5数据库。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-29 16:19:47

看起来您很幸运--Firebird2.1引入了一个 aggregate function,它的工作方式类似于MySQL中的GROUP_CONCAT,它允许如下所示的查询:

代码语言:javascript
复制
SELECT p.Name, LIST(c.Name, ', ')
FROM parent p INNER JOIN child c on c.parentid = p.parentid
GROUP by p.Name;

编辑,再排序

在应用LIST聚合函数之前,您可以通过对派生表中的数据进行预排序来影响排序,如下所示:

代码语言:javascript
复制
SELECT x.ParentName, LIST(x.ChildName, ', ')
FROM 
(
  SELECT p.Name as ParentName, c.Name as ChildName
  FROM parent p INNER JOIN child c on c.parentid = p.parentid
  ORDER BY c.Name DESC
) x
GROUP by x.ParentName;
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26635451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档