mysql,同一个表根据其中的两个字段修改这两个中的一个字段
迷茫
迷茫 2017-05-18 10:50:49
[MySQL讨论组]

有个student表,表字段有id,name,parent_id,createDate等,现在要根据parent_id,name,将同一个parent_id下的name相同的学员的name进行修改,保证同一个parent_id下不再存在重复的name,该如何处理呢

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(1)
PHP中文网
select * 
  from student 
  where id not in(select min(id) from student group by parent_id,name)t

这就是把存在重复的学员找出来,至于怎么修改那就看你了。

补充:
修改打算根据createDate排序,然后name后面加上排序后的序号

update student t1 inner join 
    (select idx,id 
     from
         (select if(@m_last_parent_id=parent_id and @m_last_name=name,@m_i:=@m_i+1,@m_i:=0) idx,
             @m_last_parent_id:=parent_id,@m_last_name:=name,id,parent_id,name,createDate 
          from student
          order by parent_id,name,createDate
         )m 
     where idx>0
    )t2 on t1.id=t2.id 
set t1.name=concat(t1.name,t2.idx);

这是我自己测试的结果:

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号