SQL更新依赖于其他两列的列

时间:2014-12-08 23:09:51

标签: database ms-access ms-access-2010 updates

我需要帮助找出如何正确执行更新查询,该查询将根据另一列是否包含最新信息来更新列。

我的表看起来像这样:

Document# | Revison# | Latest? |
----01--------01---------No-----
----01--------02---------No-----
----01--------03---------Yes---- 
----02--------01---------No----- 
----02--------02---------Yes----  
----03--------01---------Yes---- 

上面的所有字段都是文本字段。

文档编号可能与我多次收到同一文档的文档编号相同,但每次收到文档时修订版编号都会增加,因为文档是相同的,但已经修改过。我需要制作最新的?列通过运行查询来自动更新,该查询将检查该行是否是最新的行。

我尝试制作另一个表并对修订版进行计数,看看是否有任何高于当前行的修订版,如果是,那么如果没有更高版本则不是最新版本,那么它是最新版本。

我也想知道可能会检查一个人的最新日期,具体取决于最新日期是最新日期。

1 个答案:

答案 0 :(得分:0)

此查询显示Access 2010中所需的结果。

SELECT
    m.[Document#],
    m.[Revison#],
    IIf(
        m.[Revison#]=DMax(
            "[Revison#]",
            "MyTable",
            "[Document#]='" & m.[Document#] & "'"
            ),
        "Yes",
        "No"
    ) AS [Latest?]
FROM MyTable AS m;

我的[Document#][Revison#]字段都是数字字段。我假设您希望将文本作为[Latest?]的类型。

这种方法只会使[Latest?]只是查询中的计算字段...因此表格中不需要存在该字段,只要您需要查看[Latest?],就可以使用该查询。

但是,如果您希望将[Latest?]作为字段保存在表格中,则可以将该查询转换为UPDATE。请注意,当您添加或删除行时,表数据将不一致,直到您再次执行UPDATE查询。

UPDATE查询适用于Access 2010中的示例数据:

UPDATE MyTable AS m
Set [Latest?] =
    IIf(
        m.[Revison#]=DMax(
            "[Revison#]",
            "MyTable",
            "[Document#]='" & m.[Document#] & "'"
            ),
        "Yes",
        "No"
    );