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

时间:2013-02-17 11:33:57

标签: sql sql-server algorithm stored-procedures

在数据库中,我有一个有两列(Position,CarName)的表车,如:

1 | BMW
2 | Mercedes
3 | Honda
4 | Toyota

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

1 | Audi
2 | BMW
3 | Mercedes
4 | Honda
5 | Toyota

删除“Honda”后:

1 | BMW
2 | Mercedes
3 | Toyota

将“Honda”排在顶部(第1位)之后:

1 | Honda
2 | BMW
3 | Mercedes
4 | Toyota

在第二个位置移动“宝马”之后:

1 | Mercedes
2 | BMW
3 | Honda
4 | Toyota

SQL Server中最好和最正确的方法是什么。

感谢。

2 个答案:

答案 0 :(得分:2)

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

您可以更改的内容是数据在您选择查询中返回给您之前的排序方式。您可以使用order by子句。

答案 1 :(得分:2)

不要那样做 - 让SQL Server处理你的Identity列。如果您需要这样的内容,请使用ROW_NUMBER()创建一个包含以下SQL的视图:

SELECT Row_Number() Over (Order By CarName) Rn, CarName
FROM YourTable
ORDER By CarName

这是一个SQL Fiddle演示。

希望这有帮助。