重新排序SQL Server数据库中的项

重新排序SQL Server数据库中的项,sql,sql-server,algorithm,stored-procedures,Sql,Sql Server,Algorithm,Stored Procedures,在数据库中,我有一个带有两列(位置,CarName)的表cars,如下所示: 表格可以修改,因此添加新行“Audi”应位于顶部,并对表格进行重新排序,如下所示: 1 | Audi 2 | BMW 3 | Mercedes 4 | Honda 5 | Toyota 删除“Honda”之后: 将“本田”行移到顶部(第1位)后: 将“BMW”移动到第二个位置后: 1 | Honda 2 | BMW 3 | Mercedes 4 | Toyota 1 | Mercedes 2 | BMW 3 | H

在数据库中,我有一个带有两列(位置,CarName)的表cars,如下所示:

表格可以修改,因此添加新行“Audi”应位于顶部,并对表格进行重新排序,如下所示:

1 | Audi
2 | BMW
3 | Mercedes
4 | Honda
5 | Toyota
删除“Honda”之后:

将“本田”行移到顶部(第1位)后:

将“BMW”移动到第二个位置后:

1 | Honda
2 | BMW
3 | Mercedes
4 | Toyota
1 | Mercedes
2 | BMW
3 | Honda
4 | Toyota
在SQL Server中,什么是最好和正确的方法


谢谢。

订单数据存储在数据库表中完全由数据库引擎决定。你无法预测


您可以更改的是数据在select查询中返回给您之前的排序方式。您可以使用
order by
子句来实现这一点。

订单数据存储在数据库表中,完全由数据库引擎决定。你无法预测

您可以更改的是数据在select查询中返回给您之前的排序方式。您可以使用一个
order by
子句来实现这一点。

不要这样做——让SQL Server处理您的标识列。如果需要类似的内容,请使用
ROW\u NUMBER()
使用以下SQL创建一个视图:

这是一个例子

希望这有帮助。

不要这样做——让SQL Server处理您的标识列。如果需要类似的内容,请使用
ROW\u NUMBER()
使用以下SQL创建一个视图:

这是一个例子


希望这能有所帮助。

您需要这样做的原因是什么?我认为您可能需要一个新的列
CarRank
,并使其递增,以便最后一个插入车将具有最高的车列。这就是您应该如何思考业务需求。是的,可能是CarRank列,在示例中,我刚刚提到了“位置”,您需要这样做的原因是什么?我认为您可能需要一个新的列
CarRank
,并使其递增,以便最后一辆插入车将具有最高的汽车排名。这就是您应该如何思考业务需求。是的,它可能是CarRank列,在示例中我只有“Position”我需要这样做,因为没有办法按“order by”排序,最后的用户需要按他们想要/需要对这些行进行排序。我需要这样做,因为没有办法按“order by”排序,结尾处的用户需要按照他们想要/需要的方式对这些行进行排序。我的标识键已自动递增,但无法按“order by”对其进行排序,结尾处的用户需要按照他们想要/需要的方式对这些行进行排序。在您的示例中,order by子句过多。OVER()强制将整个语句排序为@iOrko——这就是为什么最好将其用作视图——然后用户可以按rn ASC或DESC和CANAME ASC或DESC排序。希望这能有所帮助。@AlexanderFedorenko——是的,我知道这个特定示例是这样的,但OP希望能够按任何字段排序,因此仅显示用于说明目的(例如,ORDER BY CarName DESC或ORDER BY Rn DESC)。致以最诚挚的问候。我的标识键已自动递增,但无法按“ORDER BY”对其进行排序,最后的用户需要根据需要对这些行进行排序。在您的示例中,ORDER BY子句过多。结束()强制对整个语句进行排序@iOrko——这就是为什么最好将其用作视图——然后用户可以按rn ASC或DESC和CANAME ASC或DESC排序。希望这能有所帮助。@AlexanderFedorenko——是的,我意识到对于这个特定的示例是这样,但OP希望能够按任何字段排序,因此仅显示用于说明目的(例如,由CarName DESC订购或由Rn DESC订购)。向您致意。
1 | Honda
2 | BMW
3 | Mercedes
4 | Toyota
1 | Mercedes
2 | BMW
3 | Honda
4 | Toyota
SELECT Row_Number() Over (Order By CarName) Rn, CarName
FROM YourTable
ORDER By CarName