gpt4 book ai didi

MySQL - 如何在不分组的情况下获取 Group_Concat 的结果?

转载 作者:行者123 更新时间:2023-11-29 01:43:42 33 4
gpt4 key购买 nike

所以我有一个这样的表:

  Item Number     Collection       Items in Collection 
1234 Madison Park
2345 Madison Park
3456 Madison Park
6747 Belcaro
5678 Belcaro

我需要的是:

  Item Number     Collection       Items in Collection 
1234 Madison Park 1234, 2345, 3456
2345 Madison Park 1234, 2345, 3456
3456 Madison Park 1234, 2345, 3456
6747 Belcaro 6747, 5678
5678 Belcaro 6747, 5678

或者更好的是,这个:

  Item Number     Collection       Items in Collection 
1234 Madison Park 2345, 3456
2345 Madison Park 1234, 3456
3456 Madison Park 1234, 2345
6747 Belcaro 5678
5678 Belcaro 6747

这不是我获得结果的首选方法,但由于客户规范,需要以这种方式设置表格。此外,它需要通过 MySQL Workbench 查询来完成。我已经尝试了我能想到的 CONCAT_WS 和 GROUP_CONCAT 的所有变体,但还没有设法提出解决方案。 Group_Concat 返回我想要的结果,但随后它对集合进行了分组,这是行不通的。想法?

最佳答案

尝试在分组的集合值上将表连接到自身。 GROUP_CONCAT() 将返回一个字符串,因此您可以在其上REPLACE() 当前行的item_number,但是您并不确切知道逗号所在的位置,因此尽管这是一种 hack,但您可以使用 SEPARATOR ' ' 然后使用 REPLACE() 当前行中的 item_number , 用一个替换出现的两个空格(item_number 在中间),TRIM() 它(item_number 在最后)然后用逗号后跟一个空格替换单个空格:

SELECT i.item_number,
i.collection,
REPLACE(REPLACE(TRIM(REPLACE(g.items, i.item_number, '')), ' ', ' '), ' ', ', ') AS collection_items
FROM item_table i
INNER JOIN
(
SELECT collection,
GROUP_CONCAT(item_number SEPARATOR ' ') AS items
FROM item_table
GROUP BY collection
) g ON g.collection = i.collection

我在本地对此进行了测试并得到了您预期的结果。

SQLFiddle Demo

关于MySQL - 如何在不分组的情况下获取 Group_Concat 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12994499/

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