sql - 如何更新要反转的sql表计数器字段编号?
问题描述
我有一张桌子,上面有两个物品和一个柜台。我想更新计数器字段,以便反转计数器字段编号。比如从小到大,从大到小。
ID | 物品 | 不 |
---|---|---|
1 | 一个 | 1 |
2 | b | 1 |
3 | 一个 | 2 |
4 | b | 2 |
更新后
ID | 物品 | 不 |
---|---|---|
1 | 一个 | 2 |
2 | b | 2 |
3 | 一个 | 1 |
4 | b | 1 |
解决方案
如果我这样走:
with aux (id, item, no) as(
select 1, 'a', 1 from dual union all
select 2, 'b', 1 from dual union all
select 3, 'a', 1 from dual union all
select 4, 'b', 1 from dual)
SELECT
id,
item,
ROW_NUMBER() OVER(
PARTITION BY item
ORDER BY
id ASC
) no
FROM
aux
ORDER BY
id;
我的输出是:
id item no
-----------
1 a 1
2 b 1
3 a 2
4 b 2
但是,如果我这样做:
with aux (id, item, no) as(
select 1, 'a', 1 from dual union all
select 2, 'b', 1 from dual union all
select 3, 'a', 1 from dual union all
select 4, 'b', 1 from dual)
SELECT
id,
item,
ROW_NUMBER() OVER(
PARTITION BY item
ORDER BY
id DESC
) no
FROM
aux
ORDER BY
id;
我的输出是:
id item no
-----------
1 a 2
2 b 2
3 a 1
4 b 1
推荐阅读
- javascript - 防止重定向后页面重新加载
- nebular - 自定义 NbAuthStrategy 从异步调用中获取结果
- typescript - 导出异步成员的问题
- elasticsearch - 在 Elasticsearch 中搜索 Zulu 日期格式的文档
- javascript - 如何设置地图项的样式以在 justify-content-around 中显示?
- java - 使用 Postgres 实现 Spring + Apache Flink 项目
- spring - 配置中的默认管理员用户和数据库中的其他用户
- java - 修复此错误 Bukkit 的正确方法是什么?
- java - 如何从广播接收器中的 dbhelper 调用方法
- java - 当用户在几天后再次拒绝更新时,如何显示应用内更新对话框?