如何更改此语句以仅更新标准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>")
答案 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没有更大日期的行。