重新排序项
问题描述:
在数据库中,我有一个表,汽车行驶的两列(位置,CarName),如:重新排序项
1 | BMW
2 | Mercedes
3 | Honda
4 | Toyota
表可以修改,因此添加新行“奥迪”应该是在顶部和重新排列如表:
1 | Audi
2 | BMW
3 | Mercedes
4 | Honda
5 | Toyota
删除 “本田” 之后:
1 | BMW
2 | Mercedes
3 | Toyota
顶部移动的 “本田” 排后(第1位):
1 | Mercedes
2 | BMW
3 | Honda
4 | Toyota
什么是SQL Server做的最好的和正确的方式:
1 | Honda
2 | BMW
3 | Mercedes
4 | Toyota
移动 “宝马” 在第二位置后。
谢谢。
答
不要这样做 - 让SQL Server处理您的标识列。如果你想是这样的,创建一个视图使用ROW_NUMBER()
以下SQL:
SELECT Row_Number() Over (Order By CarName) Rn, CarName
FROM YourTable
ORDER By CarName
这里是一个SQL Fiddle示范。
希望这会有所帮助。
你需要这样做的原因是什么? – 2013-02-17 11:34:58
我想你可能需要一个新的专栏“CarRank”并使其增量,以便最后一个插入车的车辆排名最高。这就是你应该如何思考业务需求的思考。 – 2013-02-17 11:38:09
是的,它可能是列CarRank,在这个例子中,我只是“位置” – ihorko 2013-02-17 13:32:16