当前位置: 首页 > 面试题库 >

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

方航
2023-03-14
问题内容

在我希望能够“移动”行的表中,有一个名为sortid的列,该列在插入时自动比最高值高一个值(在对我的sortid
desc进行排序时,通过选择最高值很容易找到)。

但是我对于在ASP.NET页上的每一行的“向上/向下”操作中使用哪种查询感到有些困惑。我将使用哪种查询来选择要移动的行的“下”或“上”行?

谢谢


问题答案:

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

如果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)


 类似资料:
  • 问题内容: 我以前从未将golang与mysql一起使用,因此我是 第一次阅读这些内容。我想做这样的事情: 这种输入太多了,尤其是当我想 将更多变量添加到WHERE条件中时。 如果这是PHP,我将执行以下操作: 通过使用foreach循环,我可以动态生成查询并根据需要动态绑定尽可能多的变量。 像golang和mysql这样的选项吗?还是有其他选择不对查询输入每个变量组合? 问题答案: 如果您的地图

  • 问题内容: 我正在尝试调整SQL查询以检查服务器上每个数据库中存在的特定字段中存在的值。 有100个单独的数据库,我想检查每个数据库的特定记录。 答案可能是使用下面的命令,但是我很难适应它。 我在下面的链接上获得了更大的成功; https://stackoverflow.com/a/18462734/3461845 我需要能够执行以下查询: 并且还为返回的每一行拉回数据库的名称; 任何帮助是极大的

  • 我有3张桌子 许可证中的CREATED_AT是一个日期(非空)字段。 表根据同名主键/外键进行关联;客户可以拥有0个或多个许可证,每个许可证都有一个版本。 我想从这些表格中得到: 客户的名字、姓氏和创建的最后一个许可证的release\u id(根据许可证中的created\u AT字段查找最后一个),如果有。 对于这个问题,我使用了以下查询: 这似乎有效,但我问是否有人可以证实我这一点,或者是否

  • 问题内容: 我有一个名为“ df”的熊猫数据集。 我该如何做以下事情? 谢谢。 对于那些了解R的人,有一个名为sqldf的库,您可以在R中执行SQL代码,我的问题基本上是,是否在python中有像sqldf这样的库 问题答案: 这不应该做,您可以看一下包(与R中的一样) 更新2020-07-10 更新

  • 我现在正在下载我用驱动器API上传的sql数据库。有一个备份是肯定的,但当我尝试打开文件时,我得到一个文件无法打开的错误。 编辑:我解决了上面的问题。现在我想最后上传和下载sql数据库。 我的代码:

  • 目前正在android studio中用java进行一个项目,我正在尝试用sql查询两个表。各表如下: 预订表 User_Bookings表 用户表仅供参考 有没有一种方法可以使用UNION或INNER JOIN并仅使用用户ID连接这两个表? 例如,对于ID为2的用户,我希望从预订表中获得出发时间 还是UNION/INNER JOIN不是我试图实现的目标的正确运算符?正如我一直在尝试和复习我的SQ