Maison  >  Questions et réponses  >  le corps du texte

mysql, la même table modifie l'un des deux champs en fonction de deux des champs

Il existe une table d'étudiants. Les champs de la table incluent id, name, parent_id, createDate, etc. Nous devons maintenant modifier les noms des étudiants portant le même nom sous le même parent_id en fonction de parent_id, name, pour nous assurer qu'il n'y en a pas. plus de doublons sous le même nom parent_id, comment y faire face

.
迷茫迷茫2712 Il y a quelques jours705

répondre à tous(1)je répondrai

  • PHP中文网

    PHP中文网2017-05-18 10:52:49

    select * 
      from student 
      where id not in(select min(id) from student group by parent_id,name)t
    

    Il s’agit de trouver les étudiants en double. Quant à la manière de le modifier, c’est à vous de décider.

    Ajouté :
    La modification consiste à trier selon createDate, puis à ajouter le numéro de série trié après le nom

    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);

    Voici le résultat de mon propre test :

    répondre
    0
  • Annulerrépondre