我想要一张表格中每一行的订单信息。以下是我的表格。 ID列是标识及其主键。 Order列是从id列计算的。
ID -- Name -- Order
1 kiwi 1
2 banana 2
3 apple 3
一切都很好,我有一个订单栏。但是我无法切换行的顺序。 例如,我不能说从现在开始,奇异果的订单变为2,香蕉的订单变为1 换句话说,如果我们要更新计算列,那么我的问题就可以解决了。
如果我不创建订单列作为计算列,那么对于每个新条目,我必须计算最大订单,以便我可以为新条目的订单写入(最大订单)+ 1。但是我不计算每个条目的最大数字,因为它很昂贵。
那我该怎么办呢?
我搜索了解决方案并找到了创建触发功能等的解决方案。我也不想这样做。
答案 0 :(得分:2)
我可能没有理解这个问题 - 我不清楚这一点。
但是为什么要使用计数器来订购套装,你不能只为每个订单使用一个时间戳并使用它来决定哪个订单更新?
CREATE TABLE dbo.Test (
ID INT IDENTITY(1,1),
Name varchar(50),
OrderTime Datetime
)
INSERT INTO dbo.TEST (Name,OrderTime)
VALUES ('kiwi',Getdate())
SELECT *
FROM dbo.TEST
ORDER BY OrderTime
如果您需要一个基于订单时间的整数,您可以使用rownumber函数返回一个;
SELECT *,
ROW_NUMBER() OVER (ORDER BY OrderTime Desc) as OrderInt
FROM dbo.TEST