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

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

DDD
发布: 2025-01-05 22:21:40
原创
976 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板