我已经注意到很多类似的问题,但在尝试将他们的答案付诸实践后,似乎没有任何效果。
我正在尝试执行一项围绕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值来添加到我的查询中,该值已经从两个表中拉出来了其他所需数据(在这种情况下,有关人口,国家名称,国家代码,首都的数据。
数据库结构:
国家/地区表:
代码
大陆
地区
人口
GNP
GNPold
的localName
资本
Code2
城市表:
ID
名称
国家代码
区
人口
答案 0 :(得分:0)
我想你想拥有英国的国名,大陆,人口,代码,首都和城市数量。
你不需要在这里使用LIMIT,因为一个国家只有一个资本。其次,要获取您想要从表格城市而不是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;