首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL:用同一个表中的最小值更新最大值

SQL:用同一个表中的最小值更新最大值
EN

Stack Overflow用户
提问于 2018-10-25 09:29:20
回答 2查看 177关注 0票数 0

我有一张带priority的桌子。就像这样:

代码语言:javascript
运行
复制
id    priority    name
-------------------------------
1     5           SomeFunnyName
2     10          SomeFunnyName1
3     20          SomeFunnyName2
4     30          SomeFunnyName3
5     40          SomeFunnyName4

优先级较高的数据处理速度更快。但现在我必须改变优先级逻辑。因此,优先级较低的数据处理速度将更快。

如何更新这个表,使具有最高优先级的数据现在具有最低优先级?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-25 10:10:03

您可以尝试使用MAXMIN get priority并进行一些计算,以使其更改表中的MAXMIN优先级。

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
SELECT * FROM T

结果

代码语言:javascript
运行
复制
| id | priority |           name |
|----|----------|----------------|
|  1 |       40 |  SomeFunnyName |
|  2 |       35 | SomeFunnyName1 |
|  3 |       25 | SomeFunnyName2 |
|  4 |       15 | SomeFunnyName3 |
|  5 |        5 | SomeFunnyName4 |
票数 1
EN

Stack Overflow用户

发布于 2018-10-25 09:38:03

当你乘以负1,它会改变优先级,这样你就可以很容易地恢复,再乘以负1。

代码语言:javascript
运行
复制
UPDATE TABLE SET PRIORITY=-1*PRIORITY
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52985914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档