SQL: обновить максимальные значения с минимальными значениями в той же таблице - PullRequest
0 голосов
/ 25 октября 2018

У меня есть таблица с priority.Примерно так:

id    priority    name
-------------------------------
1     5           SomeFunnyName
2     10          SomeFunnyName1
3     20          SomeFunnyName2
4     30          SomeFunnyName3
5     40          SomeFunnyName4

Данные с более высоким приоритетом обрабатывались быстрее.Но теперь я должен изменить логику приоритетов.Таким образом, данные с более низким приоритетом будут выполняться быстрее.

Как я могу обновить эту таблицу, чтобы данные с самым высоким приоритетом теперь имели самый низкий приоритет?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Вы можете попробовать использовать MAX и MIN get priority и некоторые вычисления, чтобы изменить приоритет MAX и MIN из таблицы.

CREATE TABLE T(
   id int,
   priority int,
   name varchar(50)
);


insert into t values (1,5,'SomeFunnyName');
insert into t values (2,10,'SomeFunnyName1');
insert into t values (3,20,'SomeFunnyName2');
insert into t values (4,30,'SomeFunnyName3');
insert into t values (5,40,'SomeFunnyName4');

UPDATE T 
Set priority = maxVal - priority + minVal
FROM (
  SELECT MAX(priority) maxVal,MIN(priority) minVal 
  FROM T
) t1

Запрос 1 :

SELECT * FROM T

Результаты :

| id | priority |           name |
|----|----------|----------------|
|  1 |       40 |  SomeFunnyName |
|  2 |       35 | SomeFunnyName1 |
|  3 |       25 | SomeFunnyName2 |
|  4 |       15 | SomeFunnyName3 |
|  5 |        5 | SomeFunnyName4 |
0 голосов
/ 25 октября 2018

Когда вы умножаете на минус один, это меняет приоритет, таким образом вы можете легко вернуться назад, снова умножив на минус один

UPDATE TABLE SET PRIORITY=-1*PRIORITY
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...