sql - 从表中查找重复记录并删除除最新日期之外的所有记录

标签 sql ms-access ms-access-2010

我有一个如下所示的表结构

FileId      FileName          CreatedBy       CreationDate

-------    ----------        -----------      ------------
File1_1    File1                User1        2014/09/12 17:10:49
File1_2    File1                User1        2014/09/11 17:45:49
File2_1    File2                User2        2014/05/11 17:45:22
File2_3    File2                User1        2014/08/11 17:47:22

我想编写一个查询,该查询将获取具有重复条目的名称的文件,并删除除具有最新日期的条目之外的所有条目。 例如,在当前示例中,它将删除 id 为 File1_2File2_1

的记录

最佳答案

SELECT 查询开始,该查询标识您要删除的行。

SELECT y.CreatedBy, y.FileId, y.FileName, y.CreationDate
FROM YourTable AS y
WHERE
    y.CreationDate <  
        DMax(
            "CreationDate",
            "YourTable",
            "FileName='" & y.FileName & "'"
            );

验证查询标识了正确的行后,将其转换为 DELETE 查询。

DELETE
FROM YourTable AS y
WHERE
    y.CreationDate <  
        DMax(
            "CreationDate",
            "YourTable",
            "FileName='" & y.FileName & "'"
            );

关于sql - 从表中查找重复记录并删除除最新日期之外的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26063793/

相关文章:

SQL-Server常见问题-检索刚刚插入的ID

ms-access - 点击保存按钮后清除所有字段

database - 微软 Access 2007 : Add AUTOINCREMENT field from MAKE TABLE query

ms-access - 如何在 MS Access 中安装 MROUND 功能?

ms-access - 在 MS Access 中为外键设置默认值或设置为空

sql - 如何在 SQLite 中使用阿拉伯逗号选择 SQL

mysql - 如何比较 MYSQL 语句中的行数?

mysql - MySQL 中的 Access 查找

sql - 为什么此查询要求参数值?

sql - 如何查询共享另一个值的值