【发布时间】:2013-07-18 12:08:27
【问题描述】:
我需要为结果中的每一行从 0 开始的串联行中的每个字符串分配一个递增值。
这是一个简化的数据示例:
number|color
1 |red
1 |blue
1 |orange
2 |brown
3 |purple
3 |yellow
这是我需要的结果:
number|color_set
1 |0 red,1 blue,2 orange
2 |0 brown
3 |0 purple,1 yellow
这是我得到的结果:
number|color_set
1 |0 red,1 blue,2 orange
2 |3 brown
3 |4 purple,5 yellow
这是我一直在尝试的:
SET @x:=0;
SELECT number, GROUP_CONCAT(@x:=@x+1,' ',color SEPARATOR ',')
FROM table
GROUP BY number;
需要将每个结果行的变量重置为 0。我显然不是专家,而且我是该网站的新手,因此非常感谢任何帮助。
谢谢,
杰
【问题讨论】:
-
你为什么要这样做?你最终想要达到什么目标?
-
同意@Strawberry。在应用层执行分组通常比以这种方式使用
GROUP_CONCAT()更好。 -
问题是,mysql 中没有“自然顺序”,所以没有理由红色应该是 0 而不是 1
-
我必须将这些结果与一堆其他代码连接起来,这样我才能在我拥有但不是设计的 Magento 电子商务网站上填充优惠券表。我不是开发人员,但我知道一点 SQL/MySQL,所以请多多包涵。现在,我在该表中有 5984 条记录,这会减慢购物车流程。我已将折扣金额四舍五入为 393 个唯一值,每个值包含 1 到 67 个不同的产品代码。该网站要求每个产品代码前面都有一个从零开始并以 1 为增量递增的数值。
标签: mysql group-concat