我有一个小疑问,如何处理以下情况。 在数据库表中,我将相关数据保存在不同的列中,最后我将确切的顺序保存在名为位置的列中。 该表绑定(bind)到网格。现在我正在实现将更改行位置的功能,但我仍然需要更新数据库。我想问的是实现这一目标的最佳实践或最方便的方法是什么?
欢迎提出建议。
例子
姓名职位
abc 1
def 2
ghj 3
现在我点击按钮,我得到以下内容
姓名职位
定义 1
abc 2
ghj 3
我希望我已经解释清楚了!
根据评论,这是真实的例子:
TABLE1 with 3 columns ID1, ID2, POSITION
ID1 AND ID2 are FK's and the table has a PK based on ID1 and ID2
When I select the data to display I use the following query SELECT NAME, ETC FROM TABLE2 INNER JOIN TABLE1 ON ID1 = ID1 WHERE ID2 = 511 ORDER BY POSITIONNow I need to change the position on two elements so the row in TABLE1 for example 311,511,5 needs to became 311,511,4 and the row that was 433,511,4 needs to became 433,511,5. The opposite.
I hope that this helped to clear out my question.
干杯!
最佳答案
当您说:“将位置更改为行”时,您的意思是在表格中上下移动行(相对于位置
顺序)吗?
如果是这样,要将行向上移动,您需要与上一行交换位置
。要向下移动它,您需要对下一行执行相同的操作。根据您的特定 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
上有 UNIQUE 约束(在 Oracle 下确认),这也应该有效。
更多想法,你可以看看this question .
关于c# - 用于管理 SQL 表中位置的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8142139/