为MySQL结果行编号

我有一个像下面这样的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;

编辑:如上面评论中所述,最好在应用程序级别与数据库级别上做到这一点

上一篇:Eclipse开发java程序里Test用不了,怎么导包?


下一篇:转换SQLCEResultSet结果视图到数据表