如何更新 SQL Server 中的前 1 行 [英] How to update top 1 row in SQL Server

查看:98
本文介绍了如何更新 SQL Server 中的前 1 行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想更新表格中的最新行.为此,我可以使用

I want to update latest row in the table. For that I can use

select top 1 ...

但是如何通过更新来做到这一点?

but how to do this with update?

DECLARE @Result nvarchar(50)

SET @Result = (select top 1 ROUND(SUM(DATEDIFF(SS,CheckIn,CheckOut) / 60.0 / 60.0),2)  from CheckInCheckOut)

update CheckInCheckOut 
set CountHours= @Result 
where UserId_Fk = 3

我想这样做:

update top 1 CheckInCheckOut

示例将不胜感激.

编辑

我得到了正确的查询:

  DECLARE @Result nvarchar(50)
 SET @Result = (select top 1 ROUND(SUM(DATEDIFF(SS,CheckIn,'2014-05-15 03:30:32.507') / 60.0 / 60.0),2)  from CheckInCheckOut where UserId_Fk=3 order by CheckInCheckOutId desc) 

update CheckInCheckOut 
set CheckOut='2014-05-15 03:30:32.507',CountHours=@Result 
where CheckInCheckOutId = (select top (1) CheckInCheckOutId  
               from CheckInCheckOut 
               where UserId_Fk = 3
               order by CheckInCheckOutId desc )

但我收到此错误

    'Column "CheckInCheckOut.CheckInCheckOutId" is invalid in the ORDER BY clause because it is not contained in either an aggregate function or the GROUP BY clause.

'

如何在我的选择语句中使用 order by?

How can I use order by in my select statement?

推荐答案

试试这个:

UPDATE CheckInCheckOut
SET CountHours = @Result
WHERE UserId_Fk = (SELECT TOP 1 UserId_Fk 
                   FROM CheckInCheckOut 
                   ORDER BY [Your_Sort_Column])

这篇关于如何更新 SQL Server 中的前 1 行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆