在数据库中上下移动行(SQL查询帮助)

前端之家收集整理的这篇文章主要介绍了在数据库中上下移动行(SQL查询帮助)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在表格中,我希望能够“移动”行,我有一个名为sortid的列,它在插入时自动是一个高于最高值的值(通过在排序我的sortid desc时选择最高值很容易找到).

但是我对我用于ASP.NET页面上每行的’up / down’操作的查询有点困惑.我将使用什么查询来选择要移动的行的“下方”或“上方”的行?

谢谢

解决方法

向上或向下移动记录是通过分别与之前或之后的记录交换来完成的.

如果SortId值始终是连续的(即,您不删除会导致间隙的记录),那么您只需添加或减去一个即可获得下一个或上一个记录.如果不保证记录是连续的,那么您必须找到要移动的记录旁边的记录.

要在以下之前找到记录的SortId:

select max(SortId) from TheTable where SortId < @SortId

要在以下内容后找到记录的SortId:

select min(SortId) from TheTable where SortId > @SortId

要交换这两个记录,您可以使用此技巧从另一个计算一个值:

update TheTable
set SortId = @SortId1 + @SortId2 - SortId
where SortId in (@SortId1,@SortId2)

猜你在找的MsSQL相关文章