管理SQL表中位置的算法

Mai*_*iOM 1 c# sql algorithm

我有一个小疑问,如何管理以下情况.在数据库表中,我将相关数据保存在不同的列中,最后我将精确的顺序保存在名为position的列中.此表绑定到网格.现在我正在实现将更改行的位置的功能,但我还需要更新数据库.我问的是什么是最佳实践或最方便的方法来实现这一目标?

建议是值得欢迎的.

姓名职位

abc 1

def 2

ghj 3

现在我点击按钮,我得到以下内容

姓名职位

def 1

abc 2

ghj 3

我希望我已经解释过了自己!

根据评论,这是一个真实的例子:

具有3列ID1,ID2,POSITION
ID1和ID2的TABLE1 是FK,并且该表具有基于ID1和ID2的PK
当我选择要显示的数据时,我使用以下查询SELECT NAME,ETC FROM TABLE2 INNER JOIN TABLE1 ON ID1 = ID1 ID2 = 511按位置排序

现在我需要改变位置上的两个元素,因此该行中TABLE1例如311,511,5需要成为311,511,4,那是433,511,4需要该行成为433,511,5.相反的.

我希望这有助于澄清我的问题.

干杯!

Bra*_*vic 6

当你说:"将位置更改为行"时,是指在表格中上下移动行(相对于position排序)?

如果是这样,要将行向上移动,您需要position与前一行交换.要将其向下移动,您需要对下一行执行相同操作.根据您的特定SQL方言,从不同行交换值的语法可能类似于:

UPDATE YOUR_TABLE
SET position =
    CASE position
    WHEN 2 THEN 3
    WHEN 3 THEN 2
    END
WHERE position IN (2, 3)
Run Code Online (Sandbox Code Playgroud)

此示例向上移动第3行,向下移动第2行.根据您的需要更换2和3 ......

顺便说一下,即使存在UNIQUE约束position(在Oracle下确认),这也应该有效.

有关更多想法,您可以查看此问题.