1

例如,我正在使用 world.sql 数据库,下面是一个简短的示例:

CountryCode:char(3) Language:char(30) IsOfficial:enum('T', 'F') Percentage:float(4,1)

每个国家代码将有几个条目,如下所示:

ABW Dutch T 5.3
ABW English T 9.5

我的目标如下:我想获得 CountryCode 的所有官方语言。即,如果这是 ABW 的所有国家/地区代码,我希望它返回:

ABW Dutch|English

这是我的 MySQL 查询:

SELECT
  CountryCode,
  group_concat(top.offlanguages SEPARATOR "|") AS "Official Languages"
FROM (
  SELECT
    CountryCode,
    Language AS offlanguages
  FROM CountryLanguage
  WHERE IsOfficial = 'T'
  GROUP BY CountryCode
) top

出于某种原因,它返回 ABW CountryCode 下的每一种可能的语言,我不知道为什么。

即,它返回如下内容:

ABW 荷兰语|英语|阿拉伯语|...(不断地不断地)

4

2 回答 2

3

试试下面的查询

SELECT CountryCode, group_concat(Language separator "|") as "Official Languages"
FROM CountryLanguage where IsOfficial = 'T' group by CountryCode
于 2013-08-29T05:38:18.360 回答
1

GROUP BY来错地方了。应该是之后top

尝试这个:

select CountryCode, group_concat(top.offlanguages separator "|") as "Official Languages" from (
  select CountryCode, Language as offlanguages 
  from CountryLanguage where IsOfficial = 'T'
) top group by CountryCode
于 2013-08-29T05:39:46.590 回答