在一个字段上使用WHERE子句

3
我正在尝试创建一个查询,其中WHERE子句仅影响一个字段而不是其他字段。
示例表:
+--------+---------+-------------+-------------+
| ID     | Name    | COUNTRY     | LANG        |
+--------+---------+-------------+-------------+
| 1      | Sami    | UK          | English     |
| 2      | James   | Spain       | NULL        |
| 3      | John    | USA         | English     |
| 4      | Alex    | Greece      | NULL        |
| 5      | Jane    | Italy       | Italian     |
+--------+---------+-------------+-------------+

我想创建一个查询,其中包括:
1)所有ID的数量
2)LANG不为空的所有ID的数量
期望的结果为:
ID_Count
    +----------+----------------+
    | ID_COUNT | NOT_NULL_LANG  | 
    +----------+----------------+
    | 5        | 3              |
    +----------+----------------+

我认为我的编辑是有效的。 - Strawberry
嘿,丹尼尔,你应该接受KevinKirkpatrick的答案。它不会使事情变得复杂... - jarlh
2个回答

5

应该只是简单的:

select count(id) id_count, count(lang) NOT_NULL_LANG FROM TABLE_NAME;
  • COUNT()函数和大多数SQL聚合函数一样,会在计算时排除NULL值

你回答得太快了!我会删除我的回答。 - jarlh
好的回答! - Matt
1
哈哈,如果我的刷新正确的话,我比你快了15秒 :-)。本来以为被抢先了,但是意识到其他回答都忽略了更直接的方法...看起来这是一个很好的机会分享一下有用的知识,根据SQL标准,几乎所有聚合函数都会忽略NULL。 - KevinKirkpatrick

0

似乎这是一种表达情感的繁琐方式。 - Strawberry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接