【发布时间】:2019-02-22 05:01:45
【问题描述】:
我有一个包含很多行的表格,并且一个名为“order”的列从 1 到 XX 取决于我的表格中有多少行。
问题是,如果我想将带有“订单”1 的行移动到位置 3,我需要其他行的另一个“订单”来重新排列自己。
例如,如果我用“3”移动“订单”1,那么后面的所有数字都必须增加1,第二个现在必须是“订单”1。
我希望我是清楚的。
感谢您的帮助!
编辑/样本数据
Name | Order
Line 1 | 1
Line 2 | 2
Line 3 | 3
Line 4 | 4
如果我用 4 而不是 1 更新“第 1 行”的顺序,我希望其他人的顺序更新!
Name | Order
Line 2 | 1
Line 3 | 2
Line 4 | 3
Line 1 | 4
如果我用 1 更新“第 4 行”的顺序也是一样!
Name | Order
Line 4 | 1
Line 1 | 2
Line 2 | 3
Line 3 | 4
如果我用 2 来更新“第 3 行”的顺序也是一样的!
Name | Order
Line 1 | 1
Line 3 | 2
Line 2 | 3
Line 4 | 4
【问题讨论】:
-
您能提供一些示例数据并期待结果吗?
-
不清楚,因为我不知道你所说的“移动”一行是什么意思。 SQL 表中的记录在所有意图和目的上都是无序的。您能否提供一些示例数据来解释您的问题?
-
这听起来很奇怪,但是您是否考虑过为这个
order列使用浮点数或其他十进制 支持类型?它显然仍然可以定义一个订单,但您可以计算一个新的订单值 ((preceding row + succeeding row)/2),而无需重新编号其他行。 (如果您认为有必要,您可以选择定期对所有行重新编号,以将它们全部恢复为int值) -
懒惰、缓慢、简单的方法:一次移动一个位置,通过在相邻(顺序)元素之间交换顺序
-
我刚刚用示例数据更新了我的问题并期待结果@D-Shih
标签: sql sql-server sorting tsql