gpt4 book ai didi

mysql - 删除重复项保留特定字段中的值的记录

转载 作者:行者123 更新时间:2023-11-29 20:57:51 25 4
gpt4 key购买 nike

我正在尝试从 FieldA、FieldB 和 FieldC 相同的表中删除重复项。我想保留 FieldD 不为 NULL 的记录。

我通常会删除重复项(并防止将来出现重复项),如下所示:

CREATE TABLE newtable LIKE oldtable; 
INSERT newtable SELECT * FROM oldtable group by FieldA,FieldB,FieldC;
Drop Table oldtable;
Alter Table newtable RENAME oldtable;
CREATE Unique INDEX UniqueIndex ON oldtable (FieldA,FieldB,FieldC)

但是我不清楚如何修改它以包含 Not Null FieldD。我想到我可以使用 Max(Char_Length(FieldD) ,但这似乎只是返回每个组的最大值,而不是具有最大值的记录

最佳答案

现在我做了以下,但不是(恕我直言)完美的解决方案

Update Table1 as T1
Inner Join Table1 as T2
On T1.FieldA=T2.FieldA
And T1.FieldB=T2.FieldB
And T1.Field=T2.FieldC
Set T1.FieldD=T2.FieldD
Where T1.FieldD is NULL and T2.FieldD is NOT NULL

这使我能够将 FieldD 标准化为单个非空值,然后我能够使用上面发布的序列轻松删除重复项:

CREATE TABLE newtable LIKE oldtable; 
INSERT newtable SELECT * FROM oldtable group by FieldA,FieldB,FieldC;
Drop Table oldtable;
Alter Table newtable RENAME oldtable;
CREATE Unique INDEX UniqueIndex ON oldtable (FieldA,FieldB,FieldC)

在理想的情况下,我会想出一个更新查询来删除每个问题的重复内容,但这个中间步骤目前效果很好。

让问题悬而未决,以防有人对我的问题有更直接的解决方案。

关于mysql - 删除重复项保留特定字段中的值的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37489291/

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