首页 >数据库 >mysql教程 >如何在没有主键的情况下有效地从 SQLite 表中删除重复行?

如何在没有主键的情况下有效地从 SQLite 表中删除重复行?

DDD
DDD原创
2025-01-05 22:21:401031浏览

How to Efficiently Remove Duplicate Rows from a SQLite Table Without a Primary Key?

识别和删除 SQLite 数据库中的重复行

SQLite 数据库经常遇到重复行,其中多个条目共享相同的数据。在维护唯一行至关重要的情况下,删除重复项就变得至关重要。本文探讨了一种在不依赖主键列的情况下从大型 SQLite 表中删除重复行的有效方法。

考虑下表,其中包含两列 - 'hash' 和 'd'。该表中的某些行具有匹配的“hash”和“d”值。然而,相同的“d”值不一定表示匹配的“散列”值。为了解决这个问题,我们的目标是只保留每个重复行的一个实例,同时丢弃其他行。

为了区分没有主键的行,SQLite 提供了“rowid”伪列。每行都拥有唯一的“rowid”值,使我们能够区分它们。以下查询通过保留“hash”和“d”的每个唯一组合的最低“rowid”来有效删除重复行:

DELETE FROM YourTable
WHERE rowid NOT IN
(
  SELECT MIN(rowid)
  FROM YourTable
  GROUP BY hash, d
);

通过将“rowid”列与“hash”和“d”一起使用分组,此查询确保“hash”和“d”的每个唯一组合保留具有最低“rowid”的行。因此,重复的行被有效地从表中删除。

以上是如何在没有主键的情况下有效地从 SQLite 表中删除重复行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn