0

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

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

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

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

删除“本田”后:

1 | BMW
2 | Mercedes
3 | Toyota

将“Honda”行移至顶部(第 1 位)后:

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

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

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

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

谢谢。

4

2 回答 2

2

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

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

于 2013-02-17T11:37:43.123 回答
2

不要那样做——让 SQL Server 处理您的 Identity 列。如果您想要这样的东西,请使用以下 SQL 创建一个视图ROW_NUMBER()

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

这是一个SQL Fiddle演示。

希望这可以帮助。

于 2013-02-17T11:38:26.970 回答