我有一个情况,我在SQL上很弱.这里是.
我有已归档的项目,这些项目存储有数字.在数据库表中就是这样.
RowId Number CaseId
234 1 787
235 2 787
236 3 787
237 4 787
238 5 787
Run Code Online (Sandbox Code Playgroud)
这是第一次插入时的外观.但删除后,删除3号,现在在DB上就是这样.
RowId Number CaseId
234 1 787
235 2 787
237 4 787
238 5 787
Run Code Online (Sandbox Code Playgroud)
3已经消失,但我需要的是这个.
RowId Number CaseId
234 1 787
235 2 787
237 3 787
238 4 787
Run Code Online (Sandbox Code Playgroud)
这些数字也应该更新.但我无法想办法做到这一点.顺便说一句,有许多CaseId.我不会更新整个表格,我会通过CaseId选择它.你能告诉我怎么做吗?我正在使用C#.NET
我应该将它们带入列表(从Select查询中订购它们的方式)并逐个检查然后更新它们吗?我可以在C#上逐一编写支票,但我认为它效率不高.有效的方法是什么?
Number 是否必须在数据库本身中更新?如果没有,您还需要存储它吗?您还在编写 SQL 查询吗?或者只是使用实体框架?如果您正在编写实际的查询,并且您只需要选择返回数据时的行号,您可以尝试以下操作:
SELECT RowId, ROW_NUMBER() OVER (ORDER BY RowId ASC) AS [Number], CaseId
FROM [MyTable]
WHERE CaseID = 787
Run Code Online (Sandbox Code Playgroud)
编辑:正如@Mike 在评论中指出的那样,对此发表看法可能是有意义的。您可以从主表中删除 [Number] 并创建如下视图:
CREATE VIEW dbo.MyView
AS
SELECT RowId,
ROW_NUMBER() OVER (PARTITION BY CaseId ORDER BY RowId ASC) AS Number,
CaseId FROM MyTable
Run Code Online (Sandbox Code Playgroud)
PARTITION 语句将确保 Number 为每个不同的 RowId 重置
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |