如何解决SQL查询-使用SELECT从多个表中检索数据
我正在使用MySQL
我有以下两个表(在名为database_01的数据库中):
(i)城市表,其中包含不同国家/地区的城市名称,以及这些城市位于哪些国家/地区的数据
城市(city_id,city_name,country_id等)
(ii)国家表,其中我定义了世界上所有国家以及每个国家的ID。我相信Countrys表中的country_id是主键,Cities表中是外键。 (即在“城市”表中,使用country_id表示城市的国家/地区。)
国家(国家/地区ID,国家/地区名称……)
在此表中,国家/地区是一种主表,因为国家/地区列表不会经常更改,因此它基本上保持静态。但是,“城市”表有点像是一个交易表,因为每次遇到新城市以及发现该城市的国家名称时,我都会向该表中添加城市名称。
我想生成一个包含城市列表以及每个城市所在国家/地区名称的报告。 (我想确保每个城市名称在报告中仅出现一次,因为我可能错误地将同一城市两次输入到数据库中。)
例如:-
Country City
USA New York
USA Washington
USA San Francisco
USA Chicago
UK London
UK Glasgow
UK Liverpool
Germany Bonn
Germany Munich
France Paris
我运行了以下SQL语句
USE database_01;
SELECT countries.country_name,DISTINCT cities.city_name,FROM cities,countries
WHERE cities_country_id = countries_country_id
ORDER
BY country_name;
如果有人能很好地帮助我,我真的很感激。
解决方法
您可以尝试以下查询
select Distinct countries.country_name,cities.city_name
from countries left outer join cities on countries.country_id=cities.country_id
order by country_name
,
注意:区别适用于行,但不适用于单个列
选择不同的城市,并按国家名称按城市顺序左加入国家/地区
如果您的使用方式左移并加入有城市的国家,则您的查询绝对正确 解决方法如下
USE database_01;
SELECT DISTINCT cities.city_name,countries.country_name,FROM countries
LEFT JOIN cities
WHERE countries.country_id = cities.country_id
ORDER BY country_name;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。