删除特定条件的重复记录 |微软访问

Posted

技术标签:

【中文标题】删除特定条件的重复记录 |微软访问【英文标题】:Delete duplicate records for specific criteria | MS Access 【发布时间】:2020-09-14 02:48:08 【问题描述】:

基本上我有以下称为Table1 的列OrderNumBook 对于每个OrderNum,不应该有任何类型的Book 的重复记录,如果需要识别和删除它。

例如:

OrderNum 1 应该只列出一次 Book1,因此查询必须识别为 OrderNum 1 列出的另外 2 个 Book1 并删除它们。

OrderNum 4 应该只列出一次 Book2,因此查询必须识别为 OrderNum 4 列出的另一个 Book2 并将其删除。

查询运行后 Table1 应该是这样的:

我正在使用 MS Access 查询,但我正在寻找一种也适用于 mysql 查询的解决方案。

【问题讨论】:

订单#2怎么了?这里似乎缺少数据。 怎么样?订单 #2 没有列出重复的图书,因此没有要删除的记录。订单 #3 也是如此。 【参考方案1】:

我不知道如何在 MySQL 或 Access 上优雅地执行此操作,因为您的表没有主键列,这是它理应拥有的。在 Access 上,您可以尝试创建一个新表,然后使用以下查询填充它:

INSERT INTO yourNewTable (OrderNum, Book)
SELECT DISTINCT OrderNum, Book
FROM yourTable;

然后,在完成上述查询后删除yourTable

如果您的表中有主键/自增列,比如id,那么您可以直接使用以下删除语句:

DELETE
FROM yourTable t1
WHERE EXISTS (SELECT 1 FROM yourTable t2
              WHERE t2.OrderNum = t1.OrderNum AND
                    t2.Book = b1.Book AND
                    t2.id < t1.id);

对于每个(OrderNum, Book) 组合,这将在重复项中留下恰好具有最低 id 值的单个记录。

【讨论】:

以上是关于删除特定条件的重复记录 |微软访问的主要内容,如果未能解决你的问题,请参考以下文章

使用 JCL 排序删除特定记录类型的重复项

SQL删除多个条件重复记录

BigQuery - 删除特定的重复记录

如何从 mongo 数据库中的特定集合中删除重复记录?

SQL 连接到符合特定条件的重复行

SQL查询满足两个条件的重复记录只显示2条记录的方法