SQL UPDATE更新表中的最新日期

时间:2014-07-11 02:40:03

标签: sql database access-vba ms-access-2010

如何更改此语句以仅更新标准Cat和assetnum的最新条目?这两个标准将有多个条目,每个标准将具有不同的“校准日期”。我只需要更新最近校准日期的校准到期日期。

DoCmd.RunSQL ("UPDATE [Calibration Data] SET [Calibration Due Date] = '" & MyNumber & "' WHERE Category = '" & Cat & "' AND [ID] = " & assetnum & "")

需要改为这样的事情:

DoCmd.RunSQL ("UPDATE [Calibration Data] SET [Calibration Due Date] = '" & MyNumber & "' WHERE Category = '" & Cat & "' AND [ID] = " & assetnum & " AND <max of calibration date column for given Cat and assetnum>")

1 个答案:

答案 0 :(得分:1)

以下内容适用于更新最长日期:

UPDATE [Calibration Data] as cd
    SET [Calibration Due Date] = '" & MyNumber & "'
    WHERE Category = '" & Cat & "' AND
          [ID] = " & assetnum & " AND
          not exists (select 1
                      from [Calibration Data] as cd2
                      where cd2.category = cd.category and
                            cd2.id = cd.id and
                            cd2.calibrationdate > cd.calibrationdate
                     );

逻辑是更新给定类别和id没有更大日期的行。