我有一个带有priority
的表。像这样:
id priority name
-------------------------------
1 5 SomeFunnyName
2 10 SomeFunnyName1
3 20 SomeFunnyName2
4 30 SomeFunnyName3
5 40 SomeFunnyName4
具有较高优先级的数据处理速度更快。但是现在我必须更改优先级逻辑。因此,优先级较低的数据将更快地处理。
如何更新此表以使具有最高优先级的数据现在具有最低优先级?
答案 0 :(得分:2)
当您乘以减一会改变优先级,这样您可以通过再次乘以减一来轻松地还原
Security
答案 1 :(得分:1)
您可以尝试使用MAX
和MIN
获得priority
并进行一些计算,以使其更改表中的MAX
和MIN
优先级。 / p>
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
Results :
| id | priority | name |
|----|----------|----------------|
| 1 | 40 | SomeFunnyName |
| 2 | 35 | SomeFunnyName1 |
| 3 | 25 | SomeFunnyName2 |
| 4 | 15 | SomeFunnyName3 |
| 5 | 5 | SomeFunnyName4 |