gpt4 book ai didi

mysql - 使用MySQL删除表中有些重复的记录

转载 作者:行者123 更新时间:2023-11-29 14:53:39 25 4
gpt4 key购买 nike

我有一张比较美国航线竞争力的表格。因此,表中的一些字段是 id、route_id1、route_id2、airline_id1、airline_id2、sources_airport_id 和 destination_airport_id。该表是由路由映射组成的路由表自连接的结果。但结果是,该表有一些重复的记录。

例如,
路线 1 与路线 2 具有竞争关系,因为它们具有相同的 source_airport 和 destination_airport 但不同的 Airlines_id。但我有两条记录比较路线1与路线2以及路线2与路线1。它们是相同的比较,只是顺序不同。

我尝试通过自连接来获取重复项:
选择 t1.*FROM 路由 AS t1、路由 AS t2其中 t1.route_id1 = t2.route_id2 且 t1.route_id2 = t2.route_id1
但这个查询只是获取表中相同数量的记录。

如何删除“重复”数据?

提前致谢。

最佳答案

问题是你没有条件将t1t2分开。首先,您将得到 t1t2 交换的重复项。其次,如果任何行具有 route_id1 = route_id2,您也会在结果集的 t1t2 中获得这些行。

解决这个问题的最简单方法是:

SELECT t1.* FROM routes AS t1, routes AS t2 
WHERE t1.route_id1 = t2.route_id2 AND t1.route_id2 = t2.route_id1
AND t2.id > t1.id

添加的标准是一行必须比另一行具有更大的 id。这意味着返回的 t1 将始终是具有较低 id 的行。您当然可以将其替换为 < 或交换参数以获取具有较高 id 的行。

这将消除大部分重复项。如果数据库中也有适当的重复行,那么这些行将在上述查询的结果集中创建一些重复行。原因是“重复项”可能会被检测为两个不同对应行的“重复项”,而这两个行又是彼此的实际重复项。

关于mysql - 使用MySQL删除表中有些重复的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5175295/

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