我在数据库中创建了一个名为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。有没有解决的办法?
答案 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