AlgorithmsforManagingLocationsinSQLTables我有一个小问题,如何管理以下几种情况。在数据库表中,我将相关数据保存在不同的列中,最后我将确切的顺序保存在名为位置的列中。该表绑定到网格。现在我正在实现将更改行位置的功能,但我还需要更新数据库。我在问实现这一目标的最佳实践或最方便的方法是什么?欢迎提出建议。示例NamePositionabc1def2ghj3现在我点击按钮,我得到以下NamePositiondef1abc2ghj3我希望我已经解释清楚了!根据评论,这是一个真实的例子:TABLE1有3列ID1,ID2,POSITIONID1和ID2是FK,表有PK基于ID1和ID2当我选择要显示的数据时,我使用以下查询SELECTNAME,ETCFROMTABLE2INNERJOINTABLE1ONID1=ID1WHEREID2=511ORDERBYPOSITION现在我需要更改两个元素的位置,因此TABLE1中的行(例如311,511,5)需要变为311,511,4和行433,511,4该行需要变为433,511,5。的对立面。我希望这有助于澄清我的问题。干杯!当您说:“将位置更改为行”时,您的意思是在表格中向上或向下移动行(相对于位置排序)?如果是这样,要向上移动该行,您需要将该位置与上一行交换。要将其向下移动,您需要对下一行执行相同的操作。根据您的特定SQL方言,从不同行交换值的语法可能类似于:UPDATEYOUR_TABLESETposition=CASEpositionWHEN2THEN3WHEN3THEN2ENDWHEREpositionIN(2,3)此示例移动行3向上,将第2行向下移动。根据您的需要替换2和3...顺便说一句,即使位置有UNIQUE约束(在Oracle下确认),这也应该有效。有关更多想法,您可以查看此问题。我创建了一个表来保存结果,在我的示例/解决方案中,要保存的表称为“梯形图”,数据来自“数据”,它受前100个条目的限制。它首先清除表,然后将临时位置变量设置为0并开始递增/插入。以上就是《C#学习教程:SQL表位置管理算法》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注—"TRUNCATE`ladders`";SET@pos:=0;INSERTINTO`ladders`(`identifier`,`pos`,`score`)""SELECT`id`,@pos:=@pos+1,`thescore`""FROM`data`ORDERBY`thescore``》《DESCLIMIT100》;本文采集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除,如需转载请注明出处:
