簡體   English   中英

SQL 中 STUFF 的等效函數(MySSQL 中的 GROUP_CONCAT / Oracle 中的 LISTAGG)

[英]Equivalent function to STUFF in SQL (GROUP_CONCAT in MySSQL / LISTAGG in Oracle)

有誰知道 Firebird 2.5 是否有類似於 SQL 中的“STUFF”函數的函數?

我有一個包含父用戶記錄的表,另一個包含與父級相關的子用戶記錄的表。 我希望能夠提取用戶擁有的“ROLES”的逗號分隔字符串,而無需使用第二個查詢,遍歷給定 ID 返回的值並自己創建字符串。

我已經搜索了任何其他相關問題,但沒有找到。 這個鏈接字符串中的問題相當於 Sum to concatenate基本上也是我想要做的,但是使用 Firebird 2.5 數據庫。

看起來你很幸運 - Firebird 2.1 引入了一個LIST()聚合函數,它的工作方式類似於 MySQL 中的GROUP_CONCAT ,它允許這樣的查詢:

SELECT p.Name, LIST(c.Name, ', ')
FROM parent p INNER JOIN child c on c.parentid = p.parentid
GROUP by p.Name;

編輯,重新訂購

在應用LIST聚合函數之前,您可以通過對派生表中的數據進行預排序來影響排序,如下所示:

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM