例如,我有一个水果下拉列表,我想以这个特定的顺序显示它们: - 橙子(0) - 葡萄(10) - 芒果(20) - 苹果(30) 我目前处理问题的方法是将索引添加10秒(因此我可以在其间插入额外的水果)。但是,这不是很有效,特别是如果插入的项目数超过9项。我有什么想法可以更好地实现这个目标吗?
答案 0 :(得分:0)
我通常会在表格中添加priority
或ordering
列,然后对其进行排序。这样,排序与主键分开,因此我可以轻松更改排序并添加新项目。
希望这有帮助!
答案 1 :(得分:0)
为什么不创建"类别"表,并包括以下字段: 类别ID 描述 SortOrder(1,2,3,4 ..)
然后在您的Fruits表格中,添加CategoryID,然后将Fruits加入到Categories中,并按OrderOrder,Fruitname ... ORDER加入
答案 2 :(得分:0)
如果您只想创建一个静态订单而不是更改它,那么其他人建议的ordering
列可能就是您的选择。
如果您可能会更改订单并且列表很长,那将意味着更新相关订单后的每一行,这将导致大量锁定。您还可以指定水果的以下项目:
FRUIT NEXT_FRUIT
Oranges Grapes
Grapes Mangoes
Mangoes Apples
Apples (null)
然后你可以做(Oracle语法)
SELECT level, fruit FROM fruit_table
START WITH fruit = 'Oranges'
CONNECT BY fruit = PRIOR next_fruit;
LEVEL FRUIT
---------- ----------
1 Oranges
2 Grapes
3 Mangoes
4 Apples
然后,要添加新项目,您只需插入它并更新它之前的那个。
答案 3 :(得分:0)
你可以使用有理数,但还有更多实数。
这是一个玩笑,但浮动有足够的空间,并且要输入一个条目,它只是它之间的两个条目的中点。
通常对于这样的事情,我使用单独的INT SortOrder列(而不是主键)并且只进行轮班。如果表中包含大量实体数据,请将SortOrder列移到单独的表中,以避免索引问题。