MySql - 包含特定字段计数的列表

MySql - List with Count for an Specific Field

我如何在列出特定字段时进行计数? 对于我的示例(在图像上),COUNT_ROWS 的预期结果应该是:

/App/RaspLot - 2;
/App/RaspLot - 2;
/Home/ePortal_Options - 2;
/Home/ePortal_Options - 2;
/Home/ePortal_Logout - 1;

下图的当前结果:

我正在尝试:

SELECT T.`MAIN_PATH`, A.`SUB_PATH`, T.`COUNT_ROWS`
FROM `SIDENAV` A 
INNER JOIN (
    SELECT `MAIN_PATH`,  COUNT(DISTINCT `MAIN_PATH`) AS `COUNT_ROWS` 
    FROM `SIDENAV` 
    GROUP BY `MAIN_PATH`
) T ON A.`MAIN_PATH` = T.`MAIN_PATH` 
ORDER BY `ORDER_1`, `MAIN_NAME`, `ORDER_2` ASC 

看起来你真的只是想要聚合:

select main_path, count(*) as count_rows
from sidenav
group by main_path
order by count_rows desc, main_path

如果你想要每行的计数,你可以使用window函数:

select s.*, count(*) over(partition by main_path) as count_rows
from sidenav s

这需要 MySQL 8.0。在早期版本中,您可以使用子查询执行 window 计数:

select s.*,
    (select count(*) from sidenav s1 where s1.main_path = s.main_path) as count_rows
from sidenav s