MySQL groupby&WHERE子句

MySQL groupby&WHERE子句,mysql,Mysql,我有一个MySQL表,其中存储了一些关于服务器id的信息 我有以下疑问: SELECT server_id,COUNT(*) as online_clients FROM `user_activity` WHERE ISNULL(`date_end`) GROUP BY `server_id`; 我希望从中返回所有行的唯一服务器id和每个行的联机客户端 但是,如果我删除WHERE子句**,我将获得所有服务器ID**和每个服务器的联机客户端 为什么WHERE子句不起作用?在本例中,我是否应该

我有一个MySQL表,其中存储了一些关于服务器id的信息

我有以下疑问:

SELECT server_id,COUNT(*) as online_clients
FROM `user_activity` 
WHERE ISNULL(`date_end`) 
GROUP BY `server_id`;
我希望从中返回所有行的唯一服务器id和每个行的联机客户端

但是,如果我删除WHERE子句**,我将获得所有服务器ID**和每个服务器的联机客户端

为什么WHERE子句不起作用?在本例中,我是否应该使用在线客户端(即0)再次获取所有服务器\u ID?因为date_end中没有空值

谢谢你问:为什么WHERE子句不起作用?在本例中,我是否应该使用在线客户端(即0)再次获取所有服务器\u ID

答:WHERE子句中的谓词将过滤掉行,如果date\U end列中没有空值的行,查询将不会返回任何行。我们不希望返回任何行

如果我们希望从表中返回服务器\u id的不同列表,以及联机\u客户端的计数,我们可以使用如下查询:

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

可能您可以通过删除where子句来尝试将date end为NULL的group by server_id设置为NULL,因为where子句不起作用。它说date_end是未知列,让子句将其作为select语句的一部分,即date_endyes我尝试过。已执行查询,但再次返回0行。。。发生了什么…您能在问题中添加一些数据和表格以及预期的输出吗?看起来日期数据保存为0000-00-00,这不是空的谢谢老板。哦,伙计,你是对的。我觉得自己好笨,谢谢你