繁体   English   中英

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

[英]I want SQL query to relate two tables data ,where both tables have only one column each

我有两张桌子国家和城市。 两个表只有一列。 在国家/地区表中,我的值为 INDIA、UK、US 等。 在 City 表中,我有 LONDON、BANGALORE、DELHI、WASHINGTON 等值。

我想写 SQL 查询,这样 output 应该像我 select UK,LONDON 应该排在前面,所以在 US.WASHINGTON

请提供我的查询。

您需要在 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)

不可能在这两个表之间建立关系,因为它们只有一列。 您必须将 [Country] 列添加到 [City] 表中才能知道城市所属的国家/地区。

您需要第三个表来存储两个表之间的关系,并且您需要将 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 lookup JOIN city ON lookup.city_id = city.id JOIN country ON lookup.country_id = country.id

希望这可以帮助

这里有几个选项。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM