Sql 查询以从另一行获取计数

Sql Query to get count from another row

MenuID  PreMenuID  Type
P2000   BS02        p
P8001   P2000       x

嗨,专家们,我有上面给出的 table 结构,它指示菜单 ID 作为主 ID,PremenuId 指示从中转移呼叫的上一个菜单。

现在type=x表示调用出现异常

从上面的table menuid=p8001是从P2000转过来的,如图premenuid

我想获取在 table 中但在 mainId

中生成的异常计数

输出应该像这样

MenuID  Exception  OnId
p2000     1        p8001

谢谢。

您需要加入table自身。

select a.MenuID, count(b.MenuID) as Exception, group_concat(b.MenuID) as OnID 
from tableName as a
join tableName as b on a.MenuID=b.MenuID
where a.type='x'

如果我的要求正确,一个简单的 group by-语句就可以完成工作:

select PreMenuID as `MenuID`, count(Type) as `Exception`, MenuID as `OnID`
  where Type = x
  group by `MenuID`, `OnID`