是否可以在GROUP_CONCAT
中编号喜欢
如果,来自GROUP_CONCAT(empnam SEPARATOR',')
我得到一套,
< JohnM, DannyP, TiffnyK, KarlM >
我需要
< 1.JohnM, 2.DannyP, 3.TiffnyK, 4.KarlM >
我试过了,但没有得到理想的结果。
SET @x:=0;
SELECT
GROUP_CONCAT(@x:=@x+1,' ', s.empnam SEPARATOR ', ') AS emps, @x:=0
< tables >
< filters >
是否可以在查询级别,或者我必须在应用程序端执行此操作?
答案 0 :(得分:2)
你可以在应用程序端执行此操作,但在MySql中它肯定是可能的。在下面的查询中,我假设您按名称对名称进行分组,例如他们的部门(我称之为 dep )。这是为了说明计数器从每个新组的1开始。
select dep,
group_concat(
concat(@i := if (@grp = dep, @i + 1, if(@grp := dep,1,1)), '.', empnam)
separator ', ') emps
from t
group by dep;
请参阅SQL fiddle。
确保将您的表名放在from
子句中,并使用您想要分组的实际字段。如果您要分组多个字段,则需要更改分配给 @i 的表达式。例如,您可以连接定义组的值。
通过使用两个字符的分隔符,您可以确保在每个名称之间留一个空格。
答案 1 :(得分:1)
试试这个:
SET @x:=0;
SELECT
GROUP_CONCAT(CONCAT(@x:=@x+1, '.', s.empnam) SEPARATOR ', ') AS emps, @x:=0
< tables >
< filters >