Mysql SQL连接重复的结果

Mysql SQL连接重复的结果,mysql,sql,join,concat,Mysql,Sql,Join,Concat,我学习SQL的程度比平时稍微高一点,我对这一点有点执着 查询是从用户输入的来源获取航空公司飞往(目的地)的所有机场 SELECT DISTINCT a.airline_name, GROUP_CONCAT(ap.city) AS groupedDestinations FROM routes AS r LEFT JOIN airlines AS a ON r.airline = a.airline_iata

我学习SQL的程度比平时稍微高一点,我对这一点有点执着

查询是从用户输入的来源获取航空公司飞往(目的地)的所有机场

SELECT DISTINCT a.airline_name, GROUP_CONCAT(ap.city) AS groupedDestinations
            FROM routes AS r
            LEFT JOIN airlines AS a
                ON r.airline = a.airline_iata
            LEFT JOIN airports AS ap
                ON r.destination = ap.airport_iata
            WHERE r.origin = ? AND a.active="Y" AND r.codeshare != "Y"
            GROUP BY a.airline_name ASC
结果应该是:

Airline Name | city1, city2
相反,它是:

Airline Name | city1, city2, city1, city2
我花了几个小时才明白这一点,所以我希望得到任何建议、辱骂或回答:)


谢谢。

使用
分组依据时,您不需要在
选择
子句中使用
区分

你所面临的问题是,航空公司可能有多条通往某个城市的航线。这将导致城市出现重复。默认情况下,
group_concat()
不会删除这些重复项。要解决此问题,您需要在
组中使用
distinct

SELECT a.airline_name, GROUP_CONCAT(distinct ap.city) AS groupedDestinations
            FROM routes AS r
            LEFT JOIN airlines AS a
                ON r.airline = a.airline_iata
            LEFT JOIN airports AS ap
                ON r.destination = ap.airport_iata
            WHERE r.origin = ? AND a.active="Y" AND r.codeshare != "Y"
            GROUP BY a.airline_name ASC;

-_-我要睡觉了。。。。我认为distinct与此有关,我花了一两个小时浏览了这个网站,这是一个惊人的资源。非常非常感谢你,这是难以置信的帮助。希望它能在同样的情况下帮助其他人。