gpt4 book ai didi

MySQL GROUP_CONCAT() 对待第一个值的方式与其他值不同

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

我不确定这是否可行,但我正在努力在 GROUP_CONCAT() 选择中创建项目的“路径”,而不考虑使用 MIN() 我知道我做不到。

示例数据

  • ID:[1, 1, 1, 2, 2]
  • 数字:[1, 2, 3, 2, 3]
  • :[A-B、B-C、C-D、E-G、G-Z]

我希望 ID12 得到这样的结果:

  • ID路径
  • 1A-B-C-D
  • 2E-G-Z

我目前正在使用以下GROUP_CONCAT()

SELECT ID, GROUP_CONCAT(CASE WHEN Number = 1 THEN Leg ELSE RIGHT(Leg, 1) END SEPARATOR '-') 
Path FROM my_table GROUP BY ID;

但是当 IDNumber 列不从 1 开始时,这不起作用。我理想情况下希望从 开始MIN()NumberID 但我不能这样做。是否有条件地对 GROUP_CONCAT() 中的第一个值执行此操作?

最佳答案

你可以这样做:

SELECT ID,
CONCAT_WS('-',
SUBSTRING_INDEX(GROUP_CONCAT(LEFT(Leg, 1) ORDER BY NUMBER), ',', 1),
GROUP_CONCAT(RIGHT(Leg, 1) ORDER BY NUMBER SEPARATOR '-')
)
FROM my_table
GROUP BY id;

注意:您的查询中也应该包含分隔符。

关于MySQL GROUP_CONCAT() 对待第一个值的方式与其他值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45720365/

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