【问题标题】:SQL ORDER BY on Update- update last record with conditionSQL ORDER BY on Update - 使用条件更新最后一条记录
【发布时间】:2014-10-15 17:40:13
【问题描述】:

鉴于 TimeExited 为空,并且计算机名与“cm”参数相同,我正在尝试更新表 Log 的最后一条记录(具有最新 TimeAccessed 的字段)。我有这个但得到错误,“在 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; "

前两行没有问题,工作正常,最后两行有问题

【问题讨论】:

标签: sql vba ms-access


【解决方案1】:

Access SQL 不使用LIMIT n 它使用TOP n,并且正如您的问题的cmets 中引用的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
        )

【讨论】:

  • 你说得对,我搜索的不够多。解决了,谢谢
猜你喜欢
  • 1970-01-01
  • 2018-01-26
  • 2012-11-29
  • 2013-11-26
  • 1970-01-01
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多