Php Mysql上同一个表的计数子菜单
我有一个mysql表,如下所示,我试图从同一个表的父菜单中计算子菜单,但我很困惑。我还是mysql的初学者,怎么解决呢Php Mysql上同一个表的计数子菜单,php,mysql,sql,mysqli,count,Php,Mysql,Sql,Mysqli,Count,我有一个mysql表,如下所示,我试图从同一个表的父菜单中计算子菜单,但我很困惑。我还是mysql的初学者,怎么解决呢 menuId | menuName | menuType | menuParentId ------------------------------------------------- 1 | Settings | parent | NULL 2 | Set1 | child |
menuId | menuName | menuType | menuParentId
-------------------------------------------------
1 | Settings | parent | NULL
2 | Set1 | child | 1
3 | Set2 | child | 1
4 | Category | parent | NULL
5 | Cat1 | child | 4
6 | Cat2 | child | 4
7 | Dashboard | parent | NULL
我的预期结果如下:
menuId | menuName | countChild | open
--------------------------------------------
1 | Settings | 2 | true
2 | Set1 | 0 | false
3 | Set2 | 0 | false
4 | Category | 2 | true
5 | Cat1 | 0 | false
6 | Cat2 | 0 | false
7 | Dashboard | 0 | false
感谢您的帮助为每个菜单进行自左连接以计数子菜单,对于
open
使用case
语句覆盖聚合函数的结果count
SELECT a.menuId,
a.menuName,
COUNT(b.menuId) countChild,
CASE WHEN COUNT(b.menuId) > 0 THEN TRUE ELSE FALSE END `open`
FROM table1 a
LEFT JOIN table1 b ON a.menuId = b.menuParentId
GROUP BY a.menuId, a.menuName
如果你想在字符串中显示真假哇,回答得好,兄弟,非常感谢。。。wassalamu Alaikum为什么不直接使用
COUNT(b.menuId)>0作为“打开”
。由于COUNT()
从不返回NULL
,因此结果总是相同的。@是的,您是对的,这将是一个速记检查