我希望SQL查询关联两个表数据,其中两个表每个只有一列

时间:2011-06-14 14:01:24

标签: sql

我有两张表Country和City。两个表只有一列。 在国家表中,我有值 印度,英国,美国等。 在城市表我有价值 伦敦,班加罗尔,德里,华盛顿等。

我想编写SQL查询,输出应该像我选择英国时一样,伦敦应该在那之前,当美国,华盛顿应该出现在美国排等等。

请向我提供查询。

4 个答案:

答案 0 :(得分:2)

您需要在City表中创建外键,然后将表连接在一起


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)

答案 1 :(得分:2)

由于它们只有一列,因此无法在这两个表之间建立关系。您必须将[Country]列添加到[City]表中,以了解城市所属的国家/地区。

答案 2 :(得分:0)

您需要第三个表来存储两个表之间的关系,并且需要为每个现有表添加ID字段。

table city
id | city
1 | chicago

table country
id | country
3 | United States

table lookup
id | city_id | country_id
5 | 1 | 3

你必须执行JOIN连接表

SELECT * FROM {查找{1}}

希望这会有所帮助

答案 3 :(得分:0)

这里有几种选择。

首先要考虑的是,您是否要使用城市/国家名称作为唯一标识行的方式。虽然这些不太可能改变,但并非没有预见性。 Bombay => MumbaiCeylon => Sri Lnka,拼写错误等。就个人而言,我建议在每个表上使用整数字段作为PRIMARY KEY / UNIQUE IDENTIFIER。然后,您可以更改名称(包括拼写错误),而不会影响数据库中的任何其他内容。

然后您需要关联这两个表。一种选择是向CITY表添加一个字段,该字段指向COUNTRY表中的唯一标识符。另一种方法是拥有一个完全独立的两列表格,将每个城市的唯一标识符与其相关国家的唯一标识符相关联。

相关问题