在sql中为重复条目添加数字

时间:2014-11-19 10:00:26

标签: php mysql

我有这样的表: -

ID               Name                 Email                     UserName
1               Johen mak         jojo@yahoo.com              Johen_mak
2               Johen mak         jojo@gmail.com              jojo
3               gawil gorgy       jojo@homail.com             gawil_gorgy
4               Johen mak         jojo@yamail.com             jojo
5               Johen mikik       jojo@yamail.com             jojo

在我的数据库表中,某些条目位于同一个UserName,所以我需要添加_1 ....以结束UserName

我需要像这样更新上表: -

ID               Name                 Email                     UserName
1               Johen mak         jojo@yahoo.com              Johen_mak
2               Johen mak         jojo@gmail.com              jojo
3               gawil gorgy       jojo@homail.com             gawil_gorgy
4               Johen mak         jojo@yamail.com             jojo_1
5               Johen mikik       jojo@yamail.com             jojo_2

怎么做呢

3 个答案:

答案 0 :(得分:0)

我建议这是一个不同问题的症状 - 如果您希望用户名是唯一的,您应该在将数据输入数据库之前而不是之后检查数据。尝试在该行上添加唯一约束。

答案 1 :(得分:0)

我知道这个解决方案并不能完全回答你所遇到的问题,但它可能对你有所帮助:

UPDATE 
   TABLENAME T 
JOIN TABLENAME T2 
   ON T1.ID<T2.ID AND T1.Name = T2.Name
SET T2.NAME=CONCAT(T2.NAME,'_',T2.ID)

这将在第一个

之后的重复名称中添加_ID

答案 2 :(得分:0)

尝试以下:

select a.ID,a.Name,a.Email,if((select count(*) from table b where a.username=b.username and a.ID>= b.ID) = 1,a.username,concat(a.username,'_',(select count(*) from table b where a.username=b.username and a.ID> b.ID))) as username from table a