我想更新表格中的最新一行。为此,我可以使用
select top 1 ...
但如何通过更新来完成此操作?
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.
'
如何在我的select语句中使用order by?
答案 0 :(得分:1)
试试这个:
UPDATE CheckInCheckOut
SET CountHours = @Result
WHERE UserId_Fk = (SELECT TOP 1 UserId_Fk
FROM CheckInCheckOut
ORDER BY [Your_Sort_Column])