在数据库中,我有一个有两列(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中最好和最正确的方法是什么。
感谢。
答案 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演示。
希望这有帮助。