sql - 更新表中的不同行数
问题描述
我有一张这样的桌子
No Name
1 A
1 A
1 A
1 A
1 B
1 B
2 A
2 A
2 A
3 A
我需要这样的结果
No Name Seq
1 A 4
1 A 4
1 A 4
1 A 4
1 B 2
1 B 2
2 A 3
2 A 3
2 A 3
3 A 1
如果No
和Name
相同意味着更新seq
列中的计数。
我尝试了以下查询
Select LEAD(Count(No),1) Over (PARTITION BY No,Name Order by No,Name) Seq
请帮助解决这个问题。
解决方案
使用count()
:
select no, name, count(*) over (partition by no, name) as seq
如果要更新表,则可以使用cte:
with u_cte as (
select no, name, count(*) over (partition by no, name) as seq
from table t
)
update t
set t.seq = u.seq
from u_cte u inner join
table t
on t.no = u.no and t.name = u.name;
推荐阅读
- jquery-ui - 如何使用 UI 代码从链接而不是 addtab 按钮创建 UI 选项卡
- php - 在 php 中使用 utf-8 编码将 CSV 文件上传到 MySQL
- html - 字体真棒图标,如何添加增长悬停效果?
- python - 为什么熊猫类别/箱用左括号但右括号写?
- java - 在 XML 的 onClick 事件中,我们给出了一个方法名称,文档必须在哪个 java 文件中?
- django - 如何允许 django 最终用户以受控和安全的方式创建自己的表?
- java - 如何为 Phong 着色实现选择光源?
- javascript - 如何使用 html 将文本添加到行的底部?
- math - 给定数字集的所有可能乘法
- wordpress - 远程员工可访问的内部博客