gpt4 book ai didi

mysql - 从大型 mysql 地址数据库中删除重复项

转载 作者:行者123 更新时间:2023-11-29 06:10:48 25 4
gpt4 key购买 nike

我知道,这里经常讨论从 mysql 中删除重复项。但是在我的案例中,没有一个解决方案可以正常工作。

所以,我有一个地址数据几乎像这样的数据库:

ID; Anrede; Vorname; Nachname; Strasse; Hausnummer; PLZ; Ort; Nummer_Art; Vorwahl; Rufnummer

ID是primary Key,是唯一的。

我有这样的条目:

1;Herr;Michael;Müller;Testweg;1;55555;Testhausen;Mobile;012345;67890
2;Herr;Michael;Müller;Testweg;1;55555;Testhausen;Fixed;045678;877656

不同的电话号码不是问题,因为它们与我无关。所以我只想删除姓氏、街道和邮政编码中的重复项。在这种情况下,ID 1 或 ID 2。两者中的哪一个无关紧要。

我试过这样删除:

DELETE db 

FROM Import_Daten db,
Import_Daten dbl

WHERE db.id > dbl.id AND
db.Lastname = dbl.Lastname AND
db.Strasse = dbl.Strasse AND
db.PLZ = dbl.PLZ;

然后插入复制表:

INSERT INTO Import_Daten_1

SELECT MIN(db.id),
db.Anrede,
db.Firstname,
db.Lastname,
db.Branche,
db.Strasse,
db.Hausnummer,
db.Ortsteil,
db.Land,
db.PLZ,
db.Ort,
db.Kontaktart,
db.Vorwahl,
db.Durchwahl

FROM Import_Daten db,
Import_Daten dbl

WHERE db.lastname = dbl.lastname AND
db.Strasse = dbl.Strasse And
db.PLZ = dbl.PLZ;

完整的表格包含超过 10Mio 行。大小实际上是我的问题。 mysql 在具有 1.5GHZ 和 4GB RAM 的 Macbook 上的 MAMP 服务器上运行。所以不是很快。 SQL 语句在 phpmyadmin 中运行。实际上我没有其他系统的可能性。

最佳答案

你可以写一个stored procedure这将每次选择不同的数据 block (例如,通过两个值之间的 rownumber)并仅从该范围中删除。这样你会慢慢一点一点地删除你的重复项

关于mysql - 从大型 mysql 地址数据库中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38347749/

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