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

Инструкция UPDATE за повторно присвояване на стойност на колона според числова формула

A CASE изявлението може да помогне. В този пример:

  • source , Сам, е на позиция 8
  • target , Bob, е на позиция 2

Заменяйки променливите с действителните стойности, следното изявление измества всичко надолу 2 от източника, оставя между членовете както е, задава целта равна на източника, премества останалото надолу:

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)

Това би преместило нещо нагоре в списъка. Подобна логика може да се приложи за придвижване надолу по списък. И предполага, че отрицателните числа са добре и че само относителната подредба представлява интерес.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Python Pandas записват в sql с NaN стойности

  2. Вмъкване на стойности в квадратчетата за отметка в базата данни

  3. Задаване на стойност по подразбиране за колона тип ДАТА на текуща дата без част от времето?

  4. Предупреждение:mysql_result() [function.mysql-result]:Не може да се премине към ред 0 на MySQL резултатен индекс 5 в profile.php на ред 11

  5. MySQL цикъл през таблици