我有一个小疑问,如何处理以下情况。在数据库表中,我将相关数据保存在不同的列中,最后,我将确切的顺序保存在称为位置的列中。该表绑定到网格。现在,我正在实现可以更改行位置的功能,但是仍然需要更新数据库。我问的是什么最佳实践或最便捷的方法来实现这一目标?
并欢迎提出建议。
例
名字位置
abc 1
定义2
ghj 3
现在,我单击按钮,然后得到以下信息
定义1
abc 2
我希望我已经解释了自己!
根据评论,这是真实的示例:
具有3列ID1,ID2,POSITION ID1和ID2的TABLE1 是FK,并且该表具有基于ID1和ID2的PK。 当我选择要显示的数据时,我使用以下查询SELECT NAME,ETC FROM TABLE2 INNER JOIN TABLE1 ON ID1 = ID1 ID2 = 511按位置排序 现在,我需要更改两个元素上的位置,因此表1中的行例如311,511,5需要变成311,511,4,而433,511,4的行需要变成433,511,5。相反。 我希望这有助于清除我的问题。
具有3列ID1,ID2,POSITION ID1和ID2的TABLE1 是FK,并且该表具有基于ID1和ID2的PK。 当我选择要显示的数据时,我使用以下查询SELECT NAME,ETC FROM TABLE2 INNER JOIN TABLE1 ON ID1 = ID1 ID2 = 511按位置排序
现在,我需要更改两个元素上的位置,因此表1中的行例如311,511,5需要变成311,511,4,而433,511,4的行需要变成433,511,5。相反。
我希望这有助于清除我的问题。
干杯!
当您说: “将位置更改为行”时 ,是否意味着要在表格中上下移动行(相对于position顺序)?
position
如果是这样,要将其上移,您需要position与上一行交换。要向下移动它,您需要对下一行执行相同的操作。根据您的特定SQL方言,从不同行交换值的语法可能类似于以下内容:
UPDATE YOUR_TABLE SET position = CASE position WHEN 2 THEN 3 WHEN 3 THEN 2 END WHERE position IN (2, 3)
本示例将第3行向上移动,将第2行向下移动。根据需要替换2和3 …
顺便说一句,即使有一个唯一约束position(在Oracle下确认),这也应该起作用。