Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mysql - perbarui kolom tabel dari kolom lain berdasarkan pesanan

Dengan asumsi bahwa id unik untuk setiap baris, Anda dapat melakukannya dengan variabel:

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;

Jika mau, Anda dapat menulis ini tanpa subquery. Tantangannya adalah mendefinisikan variabel. Ini salah satu caranya:

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

Anda tidak dapat menginisialisasi variabel dalam subquery karena MySQL tidak mengizinkan keduanya join dan order by dalam update pernyataan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kelola MySQL dengan phpMyAdmin di Ubuntu 9.10 (Karmic)

  2. cara masuk ke mysql dan meminta database dari terminal linux

  3. Bagaimana cara saya meminta bantuan untuk mengoptimalkan &memperbaiki kueri di MySQL?

  4. menghitung dan menampilkan tanggal sebagai 'detik yang lalu', 'menit yang lalu', 'jam yang lalu' dll

  5. Bagaimana cara mendapatkan Saldo Berjalan Baru dari Saldo yang Ada?