删除特定条件的重复记录 |微软访问
Posted
技术标签:
【中文标题】删除特定条件的重复记录 |微软访问【英文标题】:Delete duplicate records for specific criteria | MS Access 【发布时间】:2020-09-14 02:48:08 【问题描述】:基本上我有以下称为Table1
的列OrderNum
和Book
对于每个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
值的单个记录。
【讨论】:
以上是关于删除特定条件的重复记录 |微软访问的主要内容,如果未能解决你的问题,请参考以下文章