我需要运行删除查询从一个表,其中有一个特定BLOB列我查询SQLite中去除斑点重复
可以依靠斑的大小,以验证重复删除任何行它?
任何建议如何归档?
表例如:
ID int
TheName varchar(50)
Content Blob
我需要运行删除查询从一个表,其中有一个特定BLOB列我查询SQLite中去除斑点重复
可以依靠斑的大小,以验证重复删除任何行它?
任何建议如何归档?
表例如:
ID int
TheName varchar(50)
Content Blob
SQLite处理任何其他字段的斑点,因此您可以在Content
列上使用比较或GROUP BY
。
要查找重复的记录,可以将所有相同的斑点分组在一起,并检查每个组中记录的计数;然后从每个组群得到一个ID:
SELECT max(ID)
FROM MyTable
GROUP BY Content
HAVING count(*) >= 2
以此为子查询,你其实可以删除这些记录:
DELETE FROM MyTable
WHERE ID IN (SELECT max(ID)
FROM MyTable
GROUP BY Content
HAVING count(*) >= 2)
(如果是三个或更多,你就必须执行此操作多次)。
如果您使用WHERE ID NOT IN(SELECT min(ID)FROM myTable GROUP BY Content)(当然,省略HAVING),则可以一次执行此操作。 –
看起来不错,我会试试 – RollRoll
您应该添加更多的列(可以称之为ContentHash)与斑点的哈希值(你可以使用SHA256或MD5)。然后使用新的列,您可以轻松识别重复并删除它们。
使用Blob大小是非常不可靠的方式,您可以删除具有相同内容大小的不同帖子。如果可以接受然后使用它)
简单的答案是“否”。但是,您需要包含您的表结构和一些数据示例。 –