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

UPDATE pernyataan untuk menetapkan kembali nilai kolom sesuai dengan rumus numerik

Sebuah CASE pernyataan dapat membantu. Dalam contoh ini:

  • source , sam, berada di posisi 8
  • target , bob, ada di posisi 2

Mengganti variabel dengan nilai aktual, pernyataan berikut menggeser semuanya ke bawah 2 dari sumber, membiarkan antar anggota apa adanya, menetapkan target sama dengan sumber, memindahkan sisanya ke bawah:

postgres=> SELECT * FROM test order by sortval;
 name | sortval
------+---------
 bob  |       2
 tom  |       4
 mary |       6
 sam  |       8
 tim  |      10
(5 rows)


postgres=>      UPDATE test
postgres->        SET sortval = CASE WHEN sortval <= 2 THEN sortval - 2
postgres->                           WHEN sortval = 8  THEN 2
postgres->                           WHEN sortval >= 8 THEN sortval - 2
postgres->                           ELSE sortval
postgres->                           END;
UPDATE 5
postgres=> SELECT * FROM test order by sortval;
 name | sortval
------+---------
 bob  |       0
 sam  |       2
 tom  |       4
 mary |       6
 tim  |       8
(5 rows)

Itu akan memindahkan sesuatu ke atas daftar. Logika serupa dapat diterapkan untuk menurunkan daftar. Dan itu mengasumsikan angka negatif baik-baik saja dan hanya urutan relatif yang menarik.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara kerja KASUS MySQL?

  2. Praktik penyatuan koneksi JDBC MySql untuk menghindari kumpulan koneksi yang habis

  3. Kesalahan Mysql:Pengguna yang ditentukan sebagai pendefinisi ('mysql.infoschema'@'localhost') tidak ada' ketika mencoba membuang tablespace

  4. MySQL:Cara terbaik untuk menyimpan alamat MAC?

  5. Cara Memberikan Semua Keistimewaan pada Database di MySQL