假设我有一个包含几列的表。
我知道如何查找重复项,然后使用此表达式仅保留一条记录,添加组合索引......
ALTER IGNORE TABLE part3 ADD UNIQUE INDEX (gtu, region, trait, pop, author, risk)
...但我希望能够控制哪一行将被删除;不仅仅是带有“的”唯一键上有重复项的第一行“,正如此处所述mysql 文档 http://dev.mysql.com/doc/refman/5.0/en/alter-table.html。
我的意思是,我确实想指定未删除的行必须是列字段中具有次要值的行,称为zvalue.
有什么建议吗??这可能吗?
Thanks!
不要尝试删除不需要的内容,而是尝试将其视为一个问题,您想要选择您想要的内容并忽略其余的内容;像这样:
CREATE TABLE `other_table` LIKE `part3`;
INSERT INTO `other_table`
SELECT `part3`.*
FROM (SELECT gtu, region, trait, pop, author, risk, MAX(zvalue) AS max_zval
FROM `part3`
GROUP BY gtu, region, trait, pop, author, risk
) `tmp`
INNER JOIN `part3` USING (gtu, region, trait, pop, author, risk)
WHERE `part3`.zvalue = `tmp`.max_zval;
这应该创建一个表other_table
满足数据中的唯一约束;仅具有最高的行zvalue
保留,其他删除(跳过)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)