sql - 删除行后重置列的数字序列
问题描述
我已经看到了许多在删除一行后重新设置标识列的解决方案。但是,我需要从不是标识列的列中重置数字序列。
+------+---------+----------+
| group| user | sequence |
+------+---------+----------+
| 1 | barney | 1 |
| 1 | andy | 2 |
| 1 | odis | 3 |
| 1 | opie | 4 |
| 2 | beaver | 1 |
| 2 | wally | 2 |
| 2 | eddie | 3 |
+------+---------+----------+
因此,如果我删除 odis,新序列需要如下所示:
+------+---------+----------+
| group| user | sequence |
+------+---------+----------+
| 1 | barney | 1 |
| 1 | andy | 2 |
| 1 | opie | 3 |
| 2 | beaver | 1 |
| 2 | wally | 2 |
| 2 | eddie | 3 |
+------+---------+----------+
解决方案
我希望这可以解决您的问题:
with tbl2(grp, usr, seq) as
(
select grp, usr,
row_number() over(partition by grp order by seq) as seq
from tbl1
)
update tbl1
set seq = t2.seq
from tbl1 t1
join tbl2 t2 on t2.grp = t1.grp and t2.usr = t1.usr
where t2.seq != t1.seq
推荐阅读
- javascript - Django 完整日历
- android - Flutter - 如何根据手机的语言更改应用程序的名称
- r - 在 R 中,我如何解释 glmnet 包中的图形?
- python - Pandas - 使用 groupby 将列与字符串组合 - TypeError 消息的问题
- c++ - 无法找出多个身份不明的参考资料::
- python-3.x - 如何检查/取消 Azure 存储容器删除操作
- java - 在类路径中覆盖 mssql-jdbc 驱动程序时如何解决错误 - 在类中找不到主方法
- r - 候选 SNP 主成分的判别分析
- javascript - 无法使用 Javascript 更改跨度元素的文本
- php - 启用“工具集视图”插件后,Revolution Slider 图像不显示