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
我如何在列出特定字段时进行计数?
对于我的示例(在图像上),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