Mysql 如何加入依赖于外部组的计数

Mysql 如何加入依赖于外部组的计数,mysql,join,Mysql,Join,我有一张这样的桌子: id | mid | oid 1 | 400 | 1 2 | 400 | NULL 3 | 401 | 1 4 | 403 | NULL 我正在尝试返回MID、带nullOID的记录数和带notnullOID的记录数 目前我使用的是: SELECT (SELECT COUNT(id) FROM drp_ledger WHERE oid IS NULL) AS que, (SELECT COUNT(id) FROM drp_ledger WHERE oid IS

我有一张这样的桌子:

id | mid | oid
 1 | 400 | 1
 2 | 400 | NULL
 3 | 401 | 1
 4 | 403 | NULL
我正在尝试返回MID、带
null
OID的记录数和带
notnull
OID的记录数

目前我使用的是:

SELECT 
(SELECT COUNT(id) FROM drp_ledger WHERE oid IS NULL) AS que,
(SELECT COUNT(id) FROM drp_ledger WHERE oid IS NOT NULL) AS finished, 
`mid` FROM drp_ledger GROUP BY `mid`
但是,这将返回
NULL
notnull
oid的整个计数

因此,我尝试使用一个
加入
我觉得我很接近,但我就是无法让它工作

SELECT l.`mid`, que, finished FROM drp_ledger AS l
JOIN (SELECT COUNT(id) AS que FROM drp_ledger WHERE oid IS NULL GROUP BY `mid`) AS q ON q.`mid` =  l.`mid`
JOIN (SELECT COUNT(id) AS finished FROM drp_ledger WHERE oid IS NOT NULL GROUP BY `mid`) AS f ON f.`mid` = l.`mid`
我想返回:

mid | que | finished
400 |  1  |   1
401 |  0  |   1
403 |  1  |   0
不需要加入

SELECT
  mid,
  SUM(IF(oid IS NULL,1,0)) AS oid_null,
  SUM(IF(oid IS NOT NULL,1,0)) AS oid_not_null
FROM tablename
GROUP BY mid

你很接近,但是你忘了在子查询中选择
mid

Hmm,我想如果我得到
错误代码:1146表'leechprotect.drp\u ledger'不存在
,那将是一些cpanel问题。我不知道cpanel,但说它有效。太好了,非常感谢!