2011-11-23 58 views
0

我想重覆一张表,在那里我知道有'关闭'(但不是确切)行需要被删除。MYSQL:查找和删除相似的记录 - 更新与示例

我有一张表,有22个字段,并且可以通过比较5个字段来建立唯一性。在剩余的17个字段(包括唯一键)中,有3个字段会导致每行都是唯一的,这意味着重复数据删除适当的方法将不起作用。

我在看看这里列出的多表删除方法:http://blog.krisgielen.be/archives/111但我无法理解最后一行代码(AND M1.cd * 100 + M1.track> M2.cd * 100 + M2。跟踪),因为我不确定cd * 100部分实现了什么...

任何人都可以帮助我吗?我怀疑我可以更好地将整个事情导出到python中,然后再重新导入它,但是(1)我仍然坚持知道如何重新删除字符串! (2)我必须将记录分解成块才能够将其导入到mysql中,因为它在300秒后超时,所以它变成了一个完整的debarkle,以便首先进入mysql ...(我是在mysql和python中都是非常新手)

该表是来自某些测试的大约40个日志文件的转储。每个日志的测试集大约有20,000个文件。重复值是测试条件,文件名/参数或测试结果。


CREATE SHOW TABLE: 

    CREATE TABLE `t1` (
    `DROID_V` int(1) DEFAULT NULL, 
    `Sig_V` varchar(7) DEFAULT NULL, 
    `SPEED` varchar(4) DEFAULT NULL, 
    `ID` varchar(7) DEFAULT NULL, 
    `PARENT_ID` varchar(10) DEFAULT NULL, 
    `URI` varchar(10) DEFAULT NULL, 
    `FILE_PATH` varchar(68) DEFAULT NULL, 
    `NAME` varchar(17) DEFAULT NULL, 
    `METHOD` varchar(10) DEFAULT NULL, 
    `STATUS` varchar(14) DEFAULT NULL, 
    `SIZE` int(10) DEFAULT NULL, 
    `TYPE` varchar(10) DEFAULT NULL, 
    `EXT` varchar(4) DEFAULT NULL, 
    `LAST_MODIFIED` varchar(10) DEFAULT NULL, 
    `EXTENSION_MISMATCH` varchar(32) DEFAULT NULL, 
    `MD5_HASH` varchar(10) DEFAULT NULL, 
    `FORMAT_COUNT` varchar(10) DEFAULT NULL, 
    `PUID` varchar(15) DEFAULT NULL, 
    `MIME_TYPE` varchar(24) DEFAULT NULL, 
    `FORMAT_NAME` varchar(10) DEFAULT NULL, 
    `FORMAT_VERSION` varchar(10) DEFAULT NULL, 
    `INDEX` int(11) NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (`INDEX`) 
    ) ENGINE=MyISAM AUTO_INCREMENT=960831 DEFAULT CHARSET=utf8 

唯一独特字段是PriKey, '索引'。

独特的记录可以通过查看DROID_V,Sig_V,SPEED来建立。 NAMEPUID

在约90,000行中,我有大约10,000个dups,它们可能是一个记录的单个副本,或者有多达6个重复的记录。


行的例子:由于是

5;"v37";"slow";"10266";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/7";"image/tiff";"Tagged Ima";"3";"191977" 
    5;"v37";"slow";"10268";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/8";"image/tiff";"Tagged Ima";"4";"191978" 
    5;"v37";"slow";"10269";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/9";"image/tiff";"Tagged Ima";"5";"191979" 
    5;"v37";"slow";"10270";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/10";"image/tiff";"Tagged Ima";"6";"191980" 
    5;"v37";"slow";"12766";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/7";"image/tiff";"Tagged Ima";"3";"193977" 
    5;"v37";"slow";"12768";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/8";"image/tiff";"Tagged Ima";"4";"193978" 
    5;"v37";"slow";"12769";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/9";"image/tiff";"Tagged Ima";"5";"193979" 
    5;"v37";"slow";"12770";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/10";"image/tiff";"Tagged Ima";"6";"193980" 

行范例:它应该是

5;"v37";"slow";"10266";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/7";"image/tiff";"Tagged Ima";"3";"191977" 
    5;"v37";"slow";"10268";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/8";"image/tiff";"Tagged Ima";"4";"191978" 
    5;"v37";"slow";"10269";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/9";"image/tiff";"Tagged Ima";"5";"191979" 
    5;"v37";"slow";"10270";;"file:";"V1-FL425817.tif";"V1-FL425817.tif";"BINARY_SIG";"MultipleIdenti";"20603284";"FILE";"tif";"2008-11-03";;;;"fmt/10";"image/tiff";"Tagged Ima";"6";"191980" 

请注意,你可以从我已经切成末索引列见出其他一些行 - 我只识别了一小组重复行。请让我知道,如果你需要更多的'噪音'其余的数据库

谢谢。

+1

添加您的表数据的一个例子,你想要得到的结果集。 – aleroot

+1

另外,请提供表格定义(SHOW CREATE TABLE),并指定 - 哪些字段可能有重复的值。 – Devart

回答

1

我想出了一个修复 - 使用count函数,我用的是刚刚回到一切都在表中,通过使用COUNTdistinct NAME)函数我能够淘汰适合的DUP性判据的DUP行的COUNT(*) (如在WHERE条款载列由现场选择)

例子:

SELECT `PUID`,`DROID_V`,`SIG_V`,`SPEED`, COUNT(distinct NAME) as Hit FROM sourcelist, main_small WHERE sourcelist.SourcePUID = 'MyVariableHere' AND main_small.NAME = sourcelist.SourceFileName 
GROUP BY `PUID`,`DROID_V`,`SIG_V`,`SPEED` ORDER BY `DROID_V` ASC, `SIG_V` ASC, `SPEED`;