识别和删除 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中文网其他相关文章!