我有一个我无法弄清楚的问题。
SELECT (
SELECT COUNT(bar.id)
FROM bar
WHERE foo.some_id = bar.some_id
) AS num_bar
FROM foo
GROUP BY some_id
如果 foo 看起来像这样:
ID|some_id
----------
1 |NULL
2 |apple
3 |orange
酒吧看起来像这样
ID|some_id
----------
1 |NULL
2 |apple
3 |orange
4 |NULL
5 |apple
6 |orange
我希望它返回:
num_bar
-------
2
2
2
但是,NULL 分组上的计数每次都返回 0。
当 group by 为 NULL 时,如何正确处理此 WHERE 子句?
最佳答案
SQL 聚合函数和比较可能会在计算中忽略 NULL 值
您可能想要做的是给它一个值,然后相应地解释空值。因此,在下面的查询中,您要求查询将空值解释为 -1。
SELECT (
SELECT COUNT(bar.id)
FROM bar
WHERE isnull(foo.some_id, -1) = isnull(bar.some_id,-1)
) AS num_bar
FROM foo
GROUP BY isnull(some_id,-1)
关于sql - 分组依据为空时的子查询选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41887581/