有没有一种方法可以向group_concat列添加递增索引?

时间:2019-04-01 06:51:21

标签: mysql

组concat列中的每一行都需要有一个递增的索引号。有可能吗?

SELECT pub_id,GROUP_CONCAT(CATE_ID SEPARATOR '/')
 FROM book_mast
 GROUP BY pub_id;

代替

| P001   | CA002/CA004
| P002   | CA003

我想要

| P001   | 1-CA002/2-CA004
| P002   | 1-CA003

有什么办法吗?

1 个答案:

答案 0 :(得分:0)

您必须设置一个变量并将其递增:

SET @a:=0;
SELECT cate_ids FROM ( 
    SELECT @a:=0, pub_id,GROUP_CONCAT( CONCAT( @a:=@a+1, '-', CATE_ID ) SEPARATOR '/') as cate_ids
    FROM book_mast
    GROUP BY pub_id 
);

您需要创建一个变量,并在每个选择上将其设置为0并在group_concat函数上对其进行递增,以便计算每行而不是行本身的组concat的结果。

我也使用子选择来摆脱由@a设置创建的0字段。