SQL Server数据库中的排序列表

| 我想知道是否有可能/在数据库中维护一个排序列表。 例如,我有一个优先级为1〜100的项目列表。每次插入时,数据库都可以将其插入适当的位置,这样,当我调用
.select(20)
时,数据库可以向我返回优先级最高的前20个项目。     
已邀请:
添加一个称为优先级的字段。适当地填充数据并对其进行排序,然后根据您的数据库选择前20位,例如
SELECT TOP 20 [Your fields here] 
FROM   table 
ORDER  BY priority 
要么
SELECT [Your fields here] 
FROM   table 
ORDER  BY priority 
LIMIT 20
为该字段添加索引可能也是一个好主意。 这是一个非常持久的解决方案。利用行实际存储在表中的顺序的任何其他解决方案都将非常脆弱。     
  我想知道是否有可能/好   维护数据库中的排序列表。 请参阅@Conrad Frix的答案以发现确实可行(使用窗口函数
ROW_NUMBER()
是另一种方法,该方法的优点是成为标准SQL并在SQL Server中受支持)。请注意,这会向表中添加一列(如果需要的话,为relvar的属性),这不是\'sorted list \',但似乎是您所需要的。 是个好主意吗?显然,如果这对您的应用程序/企业是必需的,那么在数据库中维护这些值确实是适当的。   每次插入时,数据库都可以   将其插入正确的位置 请注意,如果您有100行具有唯一的
priority
属性值1-100,并且需要将value5ѭ值设置为
priority = 55
,则现有值55-100将需要加1,并且数据库不会为您这样做除非您已经在数据库对象中编写了过程代码(例如触发器)。如果您只需要管理ѭ5not(而不是
UPDATE
或a9 bes),那么更好的方法可能是以更大的差距开始,例如您最初的100行可能有
priority
个值1000、2000、3000,... 100000。现在,与以前相同的“ 5”可以通过将属性分配为“ 12”而在54000和55000之间进行,而无需重新分配任何值。     

要回复问题请先登录注册