mysql - 选择语句以检索带条件的语言计数

标签 mysql

我需要显示拥有超过一种官方语言或超过 2 种非官方语言的国家/地区语言计数。这是我想做的,但不知道如何正确编写。任何帮助都会很棒。

SELECT 
                CountryCode, 
                IsOfficial,
                COUNT(Language) as LangCount

FROM    countrylanguage
WHERE   IsOfficial = 'T' 
GROUP BY CountryCode
HAVING COUNT(Language) > 1
OR
WHERE IsOfficial = 'F'
GROUP BY CountryCode
HAVING COUNT(Language) > 2  
ORDER BY CountryCode

最佳答案

您只需要将条件作为具有的化合物的一部分来执行

SELECT CountryCode, 
       IsOfficial,
       COUNT(Language) as LangCount
FROM countrylanguage
GROUP BY isOfficial, CountryCode
HAVING (COUNT(language) > 1 AND isOfficial = 'T')
    OR (COUNT(language) > 2 AND isOfficial = 'F')

您不能有多个 group by 和 having 子句,因此您可以组合条件。

现在如果一个国家同时拥有这两个记录,那么这两个记录都将被返回。如果一个国家只有两个标准之一,则只会返回该记录。这是你想要的吗? (这就是示例数据和预期结果有帮助的原因。)

关于mysql - 选择语句以检索带条件的语言计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49651468/

相关文章:

mysql - WHERE条件以某种方式避免了全表扫描

mysql - 在 MySQL 列中查找双引号

mysql - MySQL表设计方案的建议

mysql - 将 MySQL 更改为 PDO

python - PyMySQL 在 Python 中将变量分配给表名

mysql if 语句 - 这可能吗?

php - xampp codeigniter 项目中的空白页面加载

php - 首先创建一堆数组,然后循环遍历它们的正确方法是什么?

c++ - 带有 MySQL 的组合框

java - Solr 自动提交和自动优化?