使用表别名的SQL查询

时间:2012-08-06 05:20:40

标签: mysql sql database

我在数据库中创建了一个名为city的表。此表有2列,称为“名称”和“国家/地区”。我创建了一个查询,该查询返回来自不同国家/地区的城市组合,如下所示:

SELECT c1.name, c1.country, c2.name, c2.country 
FROM city c1, city c2
WHERE c1.country != c2.country 

此查询有效,但是城市对重复,即。我得到的结果是:

    Berlin Germany London England 
London England Berlin Germany

这意味着我的结果集中重复了城市对berlin / hamburg。有没有解决的办法?

3 个答案:

答案 0 :(得分:3)

SELECT c1.name, c1.country, c2.name, c2.country 
FROM city c1, city c2
WHERE c1.country < c2.country

答案 1 :(得分:0)

您可以使用LEFT JOIN执行此操作,请参阅Visual Explanation Of Joins试试此:

SELECT c1.name, c1.country, c2.name, c2.country 
FROM city c1
     LEFT JOIN city c2
         ON c1.country = c2.country 
            AND c1.name = c2.name
WHERE c1.country IS NULL OR 
      c2.country IS NULL;

答案 2 :(得分:-1)

一个好的数据库在一个表中永远不会有两个或多个相同的记录。所以我的建议是两个制作2个表:

cities: ID, country_ID, Name
countries: ID, Name

并且选择应该是:

SELECT c.Name, co.Name
FROM cities c
INNER JOIN countries co
    ON co.ID=c.country_ID