【问题标题】:having trouble using a Count() command in combination with Join将 Count() 命令与 Join 结合使用时遇到问题
【发布时间】:2018-11-12 04:28:46
【问题描述】:

我注意到有很多类似的问题,但在尝试将他们的答案付诸实践后,似乎没有任何效果。
我目前正在尝试执行一项围绕 MYSQL 提供的世界数据库的任务。 [1]https://dev.mysql.com/doc/world-setup/en/

目前我正在尝试选择两个表内并通过国家代码列提取的数据。这工作得很好,但是一旦我尝试将 count 命令添加到代码中,事情就会开始失败。

这是我目前所拥有的:

SELECT c.name,
c.continent,
c.population,
c.code, cy.name as capital_city
count(cy.countrycode)
from country c
left join city cy
on c.code=cy.countrycode AND c.capital = cy.id
where cy.countrycode = "GBR"
limit 1;

我也试过了:

SELECT c.name,
c.continent,
c.population,
c.code, cy.name as capital_city
(Select Count (*)
    from cy
    where countrycode ="GBR") as total_cities
from country c
left join city cy
on c.code=cy.countrycode AND c.capital = cy.id
where cy.countrycode = "GBR"
limit 1;

我对 MYSQL 还是很陌生,所以任何关于如何编写更好代码的指针都会很棒,但我真的很想知道将一个 total_cities 值添加到我的查询中,该查询已经从两个表中提取其他所需数据(在这种情况下,有关人口、国家名称、国家代码、首都的数据。

数据库结构:
国家/地区表:
代码
大陆
地区
人口
国民生产总值
GNPold
本地名称
资本
代码2

城市表:
身份证
名称
国家代码 区
人口

【问题讨论】:

  • 你能粘贴错误信息吗?
  • 限制为 1 的计数点是什么
  • 我的错误,限制 1,在我还没有完全发展我的所有加入条件之前就存在了。你可以忽略“限制1”

标签: mysql


【解决方案1】:

我猜你想知道英国的国家名称、大陆、人口、代码、首都和城市数量。

您无需在此处使用 LIMIT,因为一个国家只有一个首都。其次,要获取您应该从表 city 而不是 cy 中读取的城市总数。

SELECT
    c.name, c.continent, c.population, c.code, cy.name capital_city,
    (SELECT 
          COUNT(*) 
     FROM city WHERE countrycode ='GBR') as total_cities
FROM
    (SELECT
          name, continent, population, code, capital
     FROM country WHERE countrycode='GBR') c 
LEFT JOIN 
    city cy
ON c.code=cy.countrycode AND c.capital=cy.id;

【讨论】:

  • 刚试过这个,显然是说“大陆”列不存在...
  • @KevinMan 您能否将这两个表的结构添加到您的问题中?从您的查询中,我在您的国家/地区表中看到了一个大陆列。
  • 我现在将数据库结构添加到我的原始帖子中。但我知道我的表有一个大陆列,我只是不知道为什么它给我这样的命令行错误。
  • 好的,我已经调整了我的查询。再试一次。我这样做了; (SELECT name, continent, population, code, capital FROM city WHERE countrycode='GBR') c 而不是 (SELECT name, continent, population, code, capital FROM country WHERE countrycode='GBR') c 。再试一次。
  • 是的,我遇到了和以前一样的问题,但现在是 countryCode。您的 count 行不断从两个表中获取数据,但不允许这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-08
  • 2020-02-28
  • 2017-10-09
  • 1970-01-01
  • 2021-09-18
  • 2012-10-20
  • 1970-01-01
相关资源
最近更新 更多