加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:24:58 所属栏目:MsSql教程 来源:网络整理
导读:在表格中,我希望能够“移动”行,我有一个名为sortid的列,它在插入时自动是一个高于最高值的值(通过在排序我的sortid desc时选择最高值很容易找到). 但是我对我用于ASP.NET页面上每行的’up / down’操作的查询有点困惑.我将使用什么查询来选择要移动的行的“
在表格中,我希望能够“移动”行,我有一个名为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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读