如何在SQL中向后运行UPDATE命令(从最后一条记录到第一条)?

And*_*ell 0 sql database ado.net ms-access

我实际上想UPDATE在Access数据库(通过ADO.NET)中的表上运行命令,但我希望它向后运行(即从最后一条记录到第一个记录),以避免重复相同的记录'ID'

我尝试添加,& " ORDER BY ID DESC;"但这会引发错误,因为不允许这样做。

救命!

谢谢安迪

Dim dsxcmd As OleDbCommand

strSelect = "UPDATE Items SET ID=ID+1 WHERE ID>=" & lInsert.ToString 
dsxcmd = New OleDbCommand(strSelect, cn)
dsxcmd.ExecuteNonQuery()
dsxcmd.Dispose()
Run Code Online (Sandbox Code Playgroud)

Pre*_*gha 5

SQL是声明性的。因此,如果要按定义的顺序对更新进行排序,则需要进行游标操作(一次一行)-使用记录集,然后读取一行/写一行行循环。我认为Access没有服务器端游标,因此必须在客户端完成。

但是,如果要同时更新许多行,则需要先将它们更新为非冲突范围。

例如-首先将ID设为负数

UPDATE Items SET ID=ID * -1 WHERE ID>=...
Run Code Online (Sandbox Code Playgroud)

然后更新

UPDATE Items SET ID=(ID *-1) + 1 WHERE ... change where to pick up the new range
Run Code Online (Sandbox Code Playgroud)