如何识别和删除子字符串定义的SQL中的重复项

时间:2014-11-16 14:36:04

标签: mysql sql

我在SQL中有一个关于重复数据删除的复杂问题我可以使用一些建议:

我有一张机场代码表。但是,在某些情况下会有重复项,其中一行列出本地机场ID,而另一行列出ICAO (international) ID,其中包括前导K

我需要识别重复项,例如: KI80I80 KX49X49

请注意,有许多以K开头的有效行。

步骤1:我需要确定上述案例的重复项。

第2步:我需要使用SQL自动删除所有具有前导K的重复项。

步骤3:我需要在不同的表table b中识别哪些行使用了我刚刚删除的标识符,因此我可以将它们更新为幸存的ID(例如:如果他们使用KI80 ,我需要在这个新表中将它们更改为I80")

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您可以在删除语句中使用自联接。我们的想法是将表格与自己联系起来,但是在" K"字首。如果存在匹配,那么" K"记录是重复的:

delete t
    from table t join
         table tnotk
         on t.airportID = concat('K', tnotk.airportID) and tnotk.airportID not like 'K%'
    where t.airportID like 'K%';

注意:这假设没有非ICAO机场ID以" K"

开头。