更新时的SQL ORDER BY-用条件更新最后一条记录

时间:2014-10-15 17:40:13

标签: sql vba ms-access

我正在尝试更新表Log的最后一条记录(具有最新TimeAccessed的字段),因为TimeExited为null,并且计算机名与“cm”参数相同。我有这个,但得到错误,“在SQL语句结束时丢失分号”

有什么不对?

dbs.Execute "UPDATE Log " _
& "SET TimeExited = " & Format(CloseTime, "\#hh:mm:ss AMPM\#") _
& " WHERE TimeExited is NULL AND ComputerName = '" & cm & "'" _
& " ORDER BY TimeAccessed DESC" _
& " LIMIT 1; "
前两行没有错,工作完全正常,这是最后两个给出问题

1 个答案:

答案 0 :(得分:1)

Access SQL不使用LIMIT n它使用TOP n,并且正如您在问题评论中引用的other question中所述,您不能使用TOP你所描述的方式。相反,你需要在这些方面做一些事情:

UPDATE Log 
SET TimeExited = CloseTime
WHERE TimeExited IS NULL 
    AND ComputerName='r2d2'
    AND TimeAccessed IN
        (
            SELECT TOP 1 TimeAccessed
            FROM Log
            WHERE TimeExited IS NULL 
                AND ComputerName='r2d2'
            ORDER BY TimeAccessed DESC
        )