gpt4 book ai didi

mysql - 在应用组合唯一索引 w/ignore 后设置要在 mysql 上删除的行

转载 作者:行者123 更新时间:2023-11-29 02:32:37 24 4
gpt4 key购买 nike

假设我有一个包含多个列的表格。我知道如何找到重复项,然后用这个表达式只保留一个记录,添加一个组合索引...

ALTER IGNORE TABLE part3 ADD UNIQUE INDEX (gtu, region, trait, pop, author, risk)

...但我希望能够控制删除的行;不仅仅是“第一行在唯一键上有重复的行”,如 mysql doc 中所述.我的意思是,我确实想指定未删除的行必须是在名为 zvalue 的列字段中具有次要值的行。

有什么建议吗?这可能吗?

谢谢!

最佳答案

与其尝试删除不需要的内容,不如尝试将其视为一个问题,您可以借此选择所需的内容并忽略其余内容;像这样:

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 的行被保留,其他行被删除(跳过)。

关于mysql - 在应用组合唯一索引 w/ignore 后设置要在 mysql 上删除的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10756203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com