我有一个像下面这样的mysql结果集
id name
---------------------
1 abc
1 abc
2 xyz
2 xyz
3 pqr
现在,我需要修改结果集,以便如下所示:
id name
---------------------
1 abc-1
1 abc-2
2 xyz-1
2 xyz-2
3 pqr
总结是我需要对结果集中的名称列进行编号,并且该编号仅适用于结果集中具有多个值的行.
那么MySQL SELECT查询将是什么?
解决方法:
这可能有效,但也许我现在想不出更好的方法
set @i = 0;
select
f.id,
@i:=@i+1 as i,
case
when c.counter <= 1 then f.name
else concat(f.name,'-',(@i % c.counter) +1)
end as name
from
foo f
join (select id, count(*) as counter from foo group by id) c on c.id = f.id
order by
f.id,name;
编辑:如上面评论中所述,最好在应用程序级别与数据库级别上做到这一点