gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 06:28:06 27 4
gpt4 key购买 nike

我有类似表中的内容

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 和短 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 WHEREidentifier ="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";

结果如下,没有正确附加短uuid(这里只附加了1个短uuid,实际上它需要将前2个uuid与1个短(因为相同的短uuid)uuid和第三个uuid与其他短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 以使结果更具确定性,因此查询给定相同的数据,将仅返回多个可能结果之一,例如返回 aa,bb|1&&cc|3 而不是 bb,aa|1&&cc|3cc|3&&aa,bb|1 cc|3&&bb,aa|1.

关于Mysql - 如何避免 group by 但仍然使用 concat 和 group concat 我需要组合多个列和行结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58330334/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com