我有一个名为urls的mysql表
它有以下字段
url
title (default null)
content (default null)我的表有许多重复的行。
我想移除那些复制件。
例如
google.com - Google - search engine
google.com - null - null
google.com - Google - search engine现在,我想删除title = null加上重复行的行。
我只希望url是唯一的,没有重复的行。
有人能告诉我怎么做吗?
发布于 2013-08-19 06:18:01
这是最简单的:
create tableB like tableA;
INSERT INTO tableB SELECT DISTINCT * FROM tableA WHERE title IS NOT NULL;
DROP tableA;
RENAME tableB TO tableA;即使在生产环境中,删除和重命名通常也足够快,几乎对任何用户都是不可见的。再次检查,以确保您最终得到了适当的索引。
发布于 2013-08-19 06:15:53
您可以添加url作为惟一的index.the,下面的查询将添加唯一索引并删除解除索引。
alter ignore table urls add unique index(url);如果您不想添加唯一索引,则替代方法是创建一个具有唯一索引的临时表,复制数据,删除重复的数据并将其传输回原始表。
发布于 2013-08-19 06:26:18
DELETE FROM urls WHERE title IS NULL
OR url IN (SELECT a.URL from urls a, urls b WHERE a.url=b.url);https://stackoverflow.com/questions/18307242
复制相似问题