我正在尝试更新表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; "
前两行没有错,工作完全正常,这是最后两个给出问题
答案 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
)