Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Câu lệnh UPDATE để gán lại giá trị cột theo công thức số

Đ CASE tuyên bố có thể hữu ích. Trong ví dụ này:

  • nguồn source , sam, ở vị trí 8
  • target , bob, ở vị trí 2

Thay thế các biến bằng các giá trị thực, câu lệnh sau chuyển mọi thứ xuống 2 từ nguồn, giữ nguyên giữa các thành viên, đặt mục tiêu bằng nguồn, di chuyển phần còn lại xuống:

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)

Điều đó sẽ di chuyển một cái gì đó lên danh sách. Logic tương tự có thể được áp dụng để di chuyển danh sách xuống. Và nó giả định rằng các số âm là tốt và chỉ cần quan tâm đến thứ tự tương đối.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Triển khai hàm băm MySQL

  2. Bỏ qua tiêu chí WHERE cụ thể

  3. gì đó về ansi_nulls

  4. Bảng cha và bảng con trong Cơ sở dữ liệu là gì?

  5. mysql_result () mong đợi tham số 1 là tài nguyên, boolean đã cho