我有这样的表: -
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
怎么做呢
答案 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