我需要一个遍历数据库中每个条目的查询,检查单个值是否在数据库中的其他位置重复,如果是 - 删除两个条目(或全部,如果多于两个)。
问题是条目是URL,最多255个字符,无法识别行。由于性能限制,Stack Overflow上的一些现有答案对我不起作用,或者它们使用uniqueid,这在处理字符串时显然不会起作用。
长版:
我有两个包含URL(仅限URL)的数据库。一个数据库有大约3,000个URL,另一个大约有1,000个。
但是,1,000个网址中的大多数都来自3,000个网址数据库。我需要将1,000合并为3,000仅作为新条目。
为此,我创建了第三个数据库,其中包含来自两个表的组合URL,大约有4,000个条目。我需要在这个数据库中找到所有重复的条目并删除它们(两个都没有离开)。
我已经跟踪了这个网站上的几个例子的查询,但每当我尝试删除这两个条目时,它最终会删除所有条目,或者给出sql错误。
替代地: 我有两个数据库,每个数据库包含单独的数据库。我需要检查一个数据库中的每一行与另一个数据库中的每一行,以找到任何不重复的行,然后将它们添加到第三个数据库。
答案 0 :(得分:0)
由于您正在寻找SQL解决方案,因此这是一个。让我们假设您的表有一个列,为简单起见。但是,这当然适用于任何数量的领域:
CREATE TABLE `allkindsofvalues` (
`value` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
以下一系列查询将实现您的目标:
CREATE TABLE allkindsofvalues_temp LIKE allkindsofvalues;
INSERT INTO allkindsofvalues_temp SELECT * FROM allkindsofvalues akv1 WHERE (SELECT COUNT(*) FROM allkindsofvalues akv2 WHERE akv1.value = akv2.value) = 1;
DROP TABLE allkindsofvalues;
RENAME TABLE allkindsofvalues_temp to allkindsofvalues;