我有一个MySQL表,其中存储了一些有关server_id
的信息。
我有以下查询:
SELECT server_id,COUNT(*) as online_clients
FROM `user_activity`
WHERE ISNULL(`date_end`)
GROUP BY `server_id`;
我希望从中返回每一行server_id
和online_clients
的所有行。
但是,如果我删除WHERE子句**,我会得到所有的server_ids **和 online_clients 。
为什么WHERE子句不起作用? 我不应该再次使用他们的online_clients获取所有server_ids,在这个示例中,该函数是零(0)吗? (因为date_end中没有null)。
谢谢
答案 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