一个字段的WHERE子句

时间:2015-10-13 14:37:14

标签: mysql sql where-clause

我试图创建一个查询,其中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 IS NOT NULL

所有ID的计数

期望的结果:

ID_Count

    +----------+----------------+
    | ID_COUNT | NOT_NULL_LANG  | 
    +----------+----------------+
    | 5        | 3              |
    +----------+----------------+

2 个答案:

答案 0 :(得分:6)

应该只是:

select count(id) id_count, count(lang) NOT_NULL_LANG FROM TABLE_NAME;
  • 与大多数SQL聚合函数一样,COUNT()函数从计算中排除NULL

答案 1 :(得分:0)

使用COUNTISNULLSUM功能。

SELECT COUNT(ID) AS ID_COUNT,
COUNT(ID)-SUM(IFNULL(LANG, 1)) AS NOT_NULL_LANG 
FROM yourtable

输出

ID_COUNT    NOT_NULL_LANG
5           3

SQL小提琴:http://sqlfiddle.com/#!9/458c9/6/0