Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mysql - zaktualizuj kolumnę tabeli z innej kolumny na podstawie zamówienia

Zakładając, że id jest unikalny dla każdego wiersza, możesz to zrobić za pomocą zmiennych:

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;

Jeśli chcesz, możesz napisać to bez podzapytania. Wyzwaniem jest zdefiniowanie zmiennej. Oto jedna metoda:

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

Nie możesz zainicjować zmiennej w podzapytaniu, ponieważ MySQL nie zezwala na jednoczesne join i order by w update oświadczenie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak dodać nowe wiersze do jTable z bazy danych, klikając przycisk bez czyszczenia istniejących wierszy?

  2. Jak napisać niestandardową metodę CrudRepository(@Query), aby filtrować wynik w moim przypadku?

  3. Wstawianie tekstu z obszaru tekstowego do bazy danych MySQL bez utraty formatowania

  4. Czy istnieje sposób na wypełnienie tabeli MySQL 5.7 danymi z pliku json z podziałami wierszy na Win7?

  5. Wyszukiwanie pełnotekstowe mysql nie zwraca oczekiwanych wyników