mysql 对结果重新编号_为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;

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

标签:resultset,sql,mysql

来源: https://codeday.me/bug/20191105/1997224.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值