如何解决我想让SQL查询关联两个表数据,两个表各只有一个列
|| 我有两个表Country和City。两个表只有一列。 在国家/地区表中,我的值为 印度,英国,美国等。 在城市表中,我有类似的值 伦敦,班加罗尔,德里,华盛顿等。 我想编写SQL查询,以便输出应该像当我选择UK时那样,LONDON应该在它前面,当US时,WASHINGTON应该出现在US行中,依此类推。 请给我查询。解决方法
您需要在“城市”表中创建一个外键,然后将这些表连接在一起
ALTER TABLE city ADD COLUMN country VARCHAR(25);
ALTER TABLE city ADD PRIMARY KEY (city);
ALTER TABLE country ADD PRIMARY KEY (country);
ALTER TABLE city ADD FOREIGN KEY (country) REFERENCES country(country)
SELECT CONCAT(city,\",country) FROM city JOIN country USING (country)
, 由于这两个表只有一列,因此无法建立关系。您必须在[城市]表中添加[国家/地区]列,才能知道城市所属的国家/地区。
, 您需要第三个表来存储两个表之间的关系,并且需要向每个现有表中添加ID字段。
table city
id | city
1 | chicago
table country
id | country
3 | United States
table lookup
id | city_id | country_id
5 | 1 | 3
您将必须执行联接以连接表
SELECT * FROM
查找JOIN city ON lookup.city_id = city.id JOIN country ON lookup.country_id = country.id
希望这可以帮助
, 这里有几个选项。
首先要考虑的是您是否要使用城市/国家/地区名称作为唯一标识行的方式。尽管这些变化不太可能发生,但并非没有先例。 Bombay => Mumbai
,Ceylon => Sri Lnka
,拼写错误等。我个人建议在每个表上都有一个整数字段作为PRIMARY KEY / UNIQUE IDENTIFIER。然后,您可以更改名称(包括拼写错误),而不会影响数据库中的其他任何内容。
然后,您需要关联两个表。一种选择是向CITY表添加一个字段,该字段指向COUNTRY表中的唯一标识符。一种替代方法是使用两列完全独立的表,将每个城市的唯一标识符与其关联的国家/地区的唯一标识符相关联。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。