gpt4 book ai didi

sql server 2008 r2 top (1) 更新日期不工作

转载 作者:搜寻专家 更新时间:2023-10-30 22:14:26 26 4
gpt4 key购买 nike

我有两个列 (startTime, endTime) 的表,它们来自 dataTime 类型。

当我在此表中插入一行时,我想像这样更新此表中以前的数据:

update endTime in the row which has most recent (max) startTime

我是这样工作的(就像另一个线程告诉我的那样):

BEGIN
;with T as(
select *, ROW_NUMBER() over (order by startTime desc) RNum
from Order_Status
where OrderID=@orderID
)
update top(1) T set endTime=@startTime
END

但它似乎更新了小的(最旧的)不是最新的。

请问什么是正确的

最佳答案

您实际上并没有应用 ROW_NUMBER 方法的排序,您想要这样的东西:

BEGIN
;with T as(
select *, ROW_NUMBER() over (order by startTime desc) RNum
from Order_Status
where OrderID=@orderID
)
update T set endTime=@startTime
from (select top 1 * from T order by RNum ASC) T
END

或者更简洁一点,这应该可以工作(未经测试):

BEGIN
;with T as(
select top 1 *
from Order_Status
where OrderID=@orderID
order by startTime desc
)
update T set endTime=@startTime
END

关于sql server 2008 r2 top (1) 更新日期不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16537865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com