我有两张表Country和City。两个表只有一列。 在国家表中,我有值 印度,英国,美国等。 在城市表我有价值 伦敦,班加罗尔,德里,华盛顿等。
我想编写SQL查询,输出应该像我选择英国时一样,伦敦应该在那之前,当美国,华盛顿应该出现在美国排等等。
请向我提供查询。
答案 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 => Mumbai
,Ceylon => Sri Lnka
,拼写错误等。就个人而言,我建议在每个表上使用整数字段作为PRIMARY KEY / UNIQUE IDENTIFIER。然后,您可以更改名称(包括拼写错误),而不会影响数据库中的任何其他内容。
然后您需要关联这两个表。一种选择是向CITY表添加一个字段,该字段指向COUNTRY表中的唯一标识符。另一种方法是拥有一个完全独立的两列表格,将每个城市的唯一标识符与其相关国家的唯一标识符相关联。