【问题标题】:MYSQL Where statement/clause being ignoredMYSQL Where 语句/子句被忽略
【发布时间】:2015-01-31 09:36:57
【问题描述】:
SELECT country.continent, country.name, city.district, city.name, city.population
FROM world.country, world.city
WHERE city.population < 3000000 
LIMIT 20, 30;

我得到的是笛卡尔积,而不是显示城市人口超过 300 万的 select 子句内容的表格。

world 是数据库的名称 国家和城市是表格

请帮忙。

【问题讨论】:

  • 您需要明确地连接这两个表,而不是按照您的方式连接。您能告诉我们更多关于您的表格结构的信息吗?
  • 因为我不太清楚如何有效地描述结构。这个数据库非常庞大。这是元数据imgur.com/VXyDinf 这是图表imgur.com/1vkJW7y

标签: mysql where


【解决方案1】:

您需要将表格连接在一起:

SELECT country.continent, country.name, city.district, city.name, city.population
FROM world.country JOIN
     world.city
     ON country.code = city.countrycode
WHERE city.population < 3000000 
LIMIT 20, 30;

作为编写 SQL 的提示:切勿在 from 子句中使用逗号。始终使用显式连接。这些比隐式连接更强大(许多人认为它们使查询更易于阅读和维护)。

【讨论】:

  • 我刚刚输入了代码,但它似乎仍然忽略了我的 WHERE 语句,为什么您在 country.code 上使用 ON 而不是在选择的其中一项上使用?
  • @felipe343 - 因为country.code 是主键。
  • 哦,天哪...我放了等号符号。对不起,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多