MySQL Group By&条款

时间:2014-11-09 19:22:56

标签: mysql

我有一个MySQL表,其中存储了一些有关server_id的信息。

我有以下查询:

SELECT server_id,COUNT(*) as online_clients
FROM `user_activity` 
WHERE ISNULL(`date_end`) 
GROUP BY `server_id`;

我希望从中返回每一行server_idonline_clients的所有行。

但是,如果我删除WHERE子句**,我会得到所有的server_ids **和 online_clients

为什么WHERE子句不起作用? 我不应该再次使用他们的online_clients获取所有server_ids,在这个示例中,该函数是零(0)吗? (因为date_end中没有null)。

谢谢

1 个答案:

答案 0 :(得分:0)

问:为什么WHERE子句不起作用?难道我不能再使用他们的online_clients获得所有server_ids,在这个例子中,这是0(0)吗?

A: WHERE子句中的谓词将过滤掉行,如果date_end列中没有包含NULL值的行,则查询不会返回任何行。我们不希望返回任何行。

如果我们想要从表中返回一个不同的server_id列表,以及“online_clients”的数量,我们可以使用如下查询:

SELECT a.server_id
     , SUM(ISNULL(a.date_end)) AS online_clients
  FROM `user_activity` a 
 GROUP BY a.server_id