Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL组_CONCAT_Mysql_Sql_Group Concat - Fatal编程技术网

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列表中未聚合列的所有列,您可能会出错。