sql - 选择除最后一行以外的所有行
问题描述
我有一个选择查询,我有RowNumber()
函数,所以我在结果中有一个分区的行号。
我想达到什么目标?我想更新每个分区的所有行号,除了每个分区的最后一行。所以假设我们有 RowNumber1,2,3,4
和另一个分区,1,2
我想做一个更新子句来更新除 number 4
(第一个分区)之外的所有行号并排除2
第二个分区的行号。
我知道我们可以使用 where 子句中的简单条件排除第一行号,RowNumber != 1
但在这种情况下,我想要每个分区的最后一行号,并且该数字在所有分区中都不同。
我怎样才能做到这一点?问候
解决方案
您可以使用可更新的 CTE,但反转order by
in的方向row_number()
:
with toupdate as (
< your query here but with DESC sort instead of ASC sort or vice versa >
)
update toupdate
set . . .
where rownumber = 1;
推荐阅读
- c# - 如何仅替换字符串的第一个实例
- swift - 删除数组中多个索引处的项目
- laravel - 嵌套回复差不多完成了,只需要在视图中排列它们
- python - 尝试用二进制搜索解决python问题
- excel - Excel VBA遍历列以将非空白复制并粘贴到其他3列?
- python - pandas.series.isin 的潜在错误或奇怪行为
- regex - 使用 Powershell 替换捕获的值
- reactjs - 在通用 React 组件中指定属性
- nhibernate - nHibernate 正在尝试 SQL UPDATE 我刚刚创建的实体,而不是 INSERT?
- python - 如何修复 PuLP python 中分配优化的约束