2

我在我的数据库中创建了一个名为 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

这意味着在我的结果集中重复了城市对柏林/汉堡。有没有解决的办法?

4

3 回答 3

3
SELECT c1.name, c1.country, c2.name, c2.country 
FROM city c1, city c2
WHERE c1.country < c2.country
于 2012-08-06T05:22:39.597 回答
0

您可以使用LEFT JOINsee 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;
于 2012-08-06T05:30:05.090 回答
-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 
于 2012-08-06T05:30:55.963 回答