Mysql - 我如何避免 group by 但仍然使用 concat 和 group concat 我需要组合多个列和行结果

Mysql - How do I avoid group by but still with concat and group concat I would need to combine multiple columns and rows results

我有类似 table

的内容
mysql> select uuid , short-uuid FROM sampleUUID WHERE identifier ="test123";
+--------------------------------------+-------------+
|       uuid                           | short-uuid   |
+--------------------------------------+-------------+
| 11d52ebd-1404-115d-903e-8033863ee848 | 8033863ee848 |
| 22b6f783-aeaf-1195-97ef-a6d8c47261b1 | 8033863ee848 |
| 33c51085-ccd8-1119-ac37-332510a16e1b | 332510a16e1b |
+--------------------------------------+-------------+

我需要这样的结果(全部分组在一行中,单个值 w.r.t uuid 和 short-uuid 相同)

| uuidDetails                                                         
+----------------------------------------------------------------------------------------------------------------+-------------+
| 11d52ebd-1404-115d-903e-8033863ee848,22b6f783-aeaf-1195-97ef-a6d8c47261b1|8033863ee848&&33c51085-ccd8-1119-ac37-332510a16e1b| 332510a16e1b |
+----------------------------------------------------------------------------------------------------------------+-------------+

(基本上将 uuid 和短 uuid 从多行和多列分组到一行中)

我知道这可以通过 select GROUP_CONCAT(uuid)FROM sampleUUID WHERE identifier ="test123" group by short-uuid; 实现 但我不想在这里使用 group by ,因为它会给出多行,我需要全部在一行中。

我尝试了以下内容,但未能在单行中获得结果

select ANY_VALUE(CONCAT_WS( '||',CONCAT_WS('|',GROUP_CONCAT(uuid) SEPARATOR ','),short-uuid)) )as uuidDetails from sampleUUID 
where identifier ="test123";

结果如下所示,没有正确附加 short-uuid(这里只附加了 1 个短 uuid,实际上它需要将前 2 个 uuid 与 1 个短(因为相同的 short-uuid)uuid 和第 3 个 uuid 分组其他短 uuid)

| uuidDetails                                                         
+----------------------------------------------------------------------------------------------------------------+-------------+
| 11d52ebd-1404-115d-903e-8033863ee848,22b6f783-aeaf-1195-97ef-a6d8c47261b1,33c51085-ccd8-1119-ac37-332510a16e1b| 332510a16e1b |
+----------------------------------------------------------------------------------------------------------------+-------------+

这出乎我的意料

如有任何帮助,我们将不胜感激。谢谢

使用嵌套查询。

SELECT GROUP_CONCAT(result ORDER BY result SEPARATOR '&&') AS uuidDetails
FROM (
    SELECT CONCAT(GROUP_CONCAT(uuid ORDER BY uuid SEPARATOR ','), '|', short_uid) AS result
    FROM sampleUUID
    WHERE identifier = 'test123'
    GROUP BY short_uid
) AS x

注意:如果对 UUID 值的排序没有要求,我们可以在 GROUP_CONCAT 聚合中使用 ORDER BY 以使结果更具确定性,因此查询将 return 只是给定相同数据的许多可能结果之一,例如return aa,bb|1&&cc|3 而不是 bb,aa|1&&cc|3cc|3&&aa,bb|1cc|3&&bb,aa|1.