Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysql - актуализира колоната на таблицата от друга колона въз основа на реда

Ако приемем, че id е уникален за всеки ред, можете да направите това с променливи:

update <table> t join
       (select t.id, @rn := @rn + 1 as seqnum
        from <table> t cross join (select @rn := 0) vars
        order by old_position
       ) tt
       on tt.id = t.id
    set t.position = tt.seqnum;

Ако желаете, можете да напишете това без подзаявката. Предизвикателството е дефинирането на променливата. Ето един метод:

update <table> t
    set t.position = (@rn := coalesce(@rn, 0) + 1)
    order by old_position;

Не можете да инициализирате променливата в подзаявка, защото MySQL не позволява и двете join и order by в update изявление.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Сортирайте определени стойности до върха

  2. Как да покажете съпоставянето на вашата връзка в MySQL

  3. Пребройте броя на уникалните стойности

  4. Вложен цикъл в съхранената процедура на mysql

  5. Лесен начин за четене на единичен запис от MySQL