select语句中的多个表来获取单列

时间:2016-08-24 08:35:15

标签: sql mysql-workbench

这是学术问题。我正在使用sql workbench。

在sql中,当我们写的时候,

select city.name from city;  

执行速度更快,结果显示所有城市名称。

但是,如果我写,

select city.name from city, country;

执行时间更长,结果只显示一个城市名称。

为什么额外的表名称来自'来自'部分破坏了结果?难道不应该完全被忽略吗?

3 个答案:

答案 0 :(得分:2)

结果是笛卡尔积。可能查询不会一遍又一遍地返回一个相同的名称,它只是为每个城市表中的每一行返回一次。

答案 1 :(得分:0)

由于没有JOIN,基本上由于缺少WHERE子句而得到Cartesian Product

答案 2 :(得分:0)

如果您需要显示与您的第一个表连接的另一个表中的数据(请以某种方式),请尝试以下操作:

select city.name, country.name
from city, country
where city.country_id = country.country_id

或者您可以这样写:

select city.name, country.name
from city
join country on (city.country_id = country.country_id)

如果这很难理解,我会尝试查阅并阅读' sql join'在谷歌:)