Mysql SQL组_CONCAT
我正在使用世界数据库。 我希望得到以下专栏: 城市名称-人口-国家名称-国家使用的所有语言列表-国家使用的语言数量-大陆 这是我的疑问:Mysql SQL组_CONCAT,mysql,sql,group-concat,Mysql,Sql,Group Concat,我正在使用世界数据库。 我希望得到以下专栏: 城市名称-人口-国家名称-国家使用的所有语言列表-国家使用的语言数量-大陆 这是我的疑问: SELECT city.NAME AS city_name, city.Population, country.NAME, Group_concat(DISTINCT countrylanguage.language) AS language,
SELECT city.NAME AS city_name,
city.Population,
country.NAME,
Group_concat(DISTINCT countrylanguage.language) AS language,
Count(DISTINCT countrylanguage.language) AS lang_nr,
country.Continent
FROM city
INNER JOIN country
ON city.CountryCode = country.Code
INNER JOIN countrylanguage
ON Country.Code = countrylanguage.CountryCode
GROUP BY city.NAME
ORDER BY lang_nr DESC;
但结果是同一个国家有不同数量的语言。为什么?供将来参考:我已经用子查询解决了这个问题
SELECT city.name,
(SELECT GROUP_CONCAT(countrylanguage.language) FROM countrylanguage WHERE countrylanguage.countrycode = city.countrycode GROUP BY countrylanguage.countrycode) AS languages,
(SELECT COUNT(*) FROM countrylanguage WHERE countrylanguage.countrycode = city.countrycode GROUP BY countrylanguage.countrycode) AS lang_nr,
city.population,
country.name
FROM city
INNER JOIN country ON city.countrycode = country.code
ORDER BY lang_nr DESC
通过?@jarlh将country.NAME包含在组中,我已经尝试过了,但是query返回239行,这是大约4000个城市的国家数,因为我相信query只返回每个国家一次。事实上,在这种情况下,语言是可以的,但并不是所有的城市都被列出。同时使用country.NAME和city.NAME?是否可以添加示例数据和所需的输出小心非标准的,如果您没有使用group by子句中引用select列表中未聚合列的所有列,您可能会出错。