2015-06-23 21 views
0

我需要在SQL Server中使用ORDER BY子句2008例如訂購SQL Server中的條款更新詢問

Update tblTempChek Set TmpCheckIn='15:50:03' 
Where TempID IN (
    Select TempID 
    From tblTempChek 
    Where convert(date, TmpDate)='2015-06-23' AND UserID='1' 
    Order By TempID Desc 
) 

更新表,但是這給了錯誤

Msg 1033, Level 15, State 1, Line 3 
    The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified. 
+1

問題是:爲什麼? – dario

+0

它只是需要更新tblTempChek – Waqas

+1

使用順序更新表沒有意義。 – dario

回答

2

你需要使用TOP:

Update tblTempChek Set TmpCheckIn='15:50:03' 
    Where TempID in (
     Select TOP 1 TempID 
     From tblTempChek 
     Where Convert(date, TmpDate)='2015-06-23' AND UserID='1' 
     Order By TempID Desc 
    ) 
+1

我不這麼認爲。我試過了。你有嗎? – apomene

+0

這對我有用。我只是在我的查詢中忘記了這個血腥的「頂級」。謝謝。 – Waqas

+1

它不會失敗,但爲什麼OP有IN子句呢? –

0

一種替代可以使用max,如:

Update tblTempChek Set TmpCheckIn='15:50:03' 
Where TempID IN (
    Select MAX(TempID) 
    From tblTempChek 
    Where convert(date, TmpDate)='2015-06-23' AND UserID='1' 
) 

此假設TempID是一些遞增值。